
数据结构和算法
https://www.bilibili.com/video/BV1iJ411E7xW
菠萝味菠萝啤
邮箱2722793998@qq.com
展开
-
冒泡排序法
好记性不如烂笔头原创 2022-08-20 16:12:33 · 123 阅读 · 0 评论 -
二叉树删除某一指定节点
public void delete(Key key) { delete(root ,key); }public Node delete(Node x,Key key) { if (x==null) { return null; } int cmp = key.compareTo(x.key); if (cmp0) { x.right = delete(x.right,key); }else if (cmp0) { x.left = delete(x.left,key);原创 2022-05-23 16:05:30 · 530 阅读 · 0 评论 -
选择排序之堆排序
目录基本知识代码实现思路基本知识堆排序 是属于 简单选择排序时间复杂度为:O(nlogn)空间复杂度:O(1)是不稳定的算法堆排序首先初始化建立堆这个堆分为大根堆和小根堆初始化堆的代码知识点:完全二叉树的枝节点i其左孩子节点为2i,右孩子节点为2i+1;代码实现思路建立初始堆代码实现 :BuildMaxHelper调整堆代码实现 :HeadAdjust堆排序代码实现 :HeapSort主函数测试代码实现:mainvoid BuildMaxHelper(int A[],原创 2022-04-30 14:39:51 · 1484 阅读 · 0 评论 -
插入排序之直接插入排序
######直接插入排序是直观且简单的排序方法。基本思想:待排序列L[1…n]的排序,将L(2)…L(n)依次插入到前面已排序好的子序列中,初始假定L[1]是已排序好的子序列。上述操作执行n-1次就能得到一个有序的表。注意,插入排序采用就地排序,所以在从后面向前的比较过程中,需要反复把已排序元素逐步向后挪位,为新元素提供插入空间。边比较,边移动算法最好的理解方式就是运行一次代码时间复杂度:全部都是排序好的,那么就只执行第一层循环,若为逆序,那么时间复杂度最大因为只涉及到元素的比较和移动过程原创 2022-04-30 14:31:34 · 211 阅读 · 0 评论 -
插入排序之希尔排序(缩小增量排序)
插入排序的特点是:若基本有序,则时间复杂度低若为逆序,则时间复杂度高根据此特点,设计了希尔排序(又缩小增量排序)让这个序列,逐步的变成一个有序的序列,对其进行插入排序,这样时间复杂度就会稍低步长为几,就会分成几组最后缩小为步长为1,即对所有的元素进行一次直接插入排序。对每组内进行直接插入排序。#####基本思想:先将排序表分割成d个形如L[i,i+d,i+2d,…,i+kd]的“特殊”字表,分别进行直接插入排序,当整个表中的元素已呈现“基本有序时”,再对全体记录进行一次直接插入排序。比如第原创 2022-04-30 14:29:45 · 206 阅读 · 0 评论 -
交换排序-快速排序
对算法最好的理解方式就是手动的模拟算法快排是对冒泡的改进,基本思想分治,代码用到递归关键在于划分操作。#####定义:在待排序列中L[1…n]中,任取一个元素pivot作为基准(一般取第一个元素),通过一趟排序将待排序表 划分 为独立的两部分,使得在L[K]左右两边的元素,L[1…K-1]中所有的元素都小于pivot,L[k+1…n]中的所有元素大于等于pivot,则pivot放在了其最终位置L[k]上,此过程为一趟快速排序。和冒泡排序一样,每次确定一个元素的最终位置。和冒泡排序的不同是,快排不.原创 2022-04-30 14:26:34 · 200 阅读 · 0 评论 -
数据结构-C语言笔记
结构体C语言中的结构体就相当于与java,c++中的类```cstruct Student{ int sid; String name; int sage;}java中的类```javaclass Student{ int sid; String name; int sage; void inputStudent(){ } void showStudent...原创 2020-01-01 20:00:36 · 143 阅读 · 0 评论 -
1000内不能被7整除的数
package itheima6;/** * Created with IntelliJ IDEA. * * @Author: 从南到北 * @Date: 03/19/2022/17:28 * @Description:不能被7整除 */public class fuck1 {// public static void main(String[] args) {// int sum=0;// for (int i=1;i<=1000;i++){原创 2022-03-23 17:01:40 · 590 阅读 · 0 评论 -
Java 水仙花数(取余%取整/)
水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。public class Flower { public static void main(String[] args) { int g,s,b; for(int i=100;i<1000;i++){ g = i%10; s=i/10%10; b=i/100; .原创 2022-01-14 23:26:35 · 507 阅读 · 0 评论 -
(尚硅谷)Java使用数组创建和遍历二叉排序树
https://www.bilibili.com/video/BV1E4411H73v?p=127高效完成对数据的查询和添加二叉派叙述,插入和删除的效率比较高二叉排序树尽量保证别有相同值检索效率高,类似二分,查找,插入,使用链式的插入,并不会导致整体移动删除...原创 2022-02-09 00:36:36 · 306 阅读 · 0 评论 -
Java 三叉链表 表示 二叉树
https://www.bilibili.com/video/BV13C4y187FT?p=81原创 2022-02-09 00:20:24 · 677 阅读 · 0 评论 -
二叉树的分类、遍历
二叉树的遍历包括目录先序遍历中序遍历后序遍历层次遍历先序遍历根节点、左子树、右子树中序遍历左子树、根节点、右子树后序遍历左子树、右子树、根节点层次遍历按照层次的顺序,从根节点向下逐层进行遍历,对于同一层的节点为从左到右遍历...原创 2022-01-18 00:27:04 · 229 阅读 · 0 评论 -
为什么编程题总是结果模10^9+7
算法题中通常会要求对 10^9+7 取模,来避免整数溢出的问题。其中10^9+7是一个比较大的质数。10^x+7多半时候是1e9+7吧。模一个大数和模一个质数可以减少冲突。比如说如果所有的结果都是偶数…你模6就只可能出现0, 2, 4这三种情况…但模5还是可以出现2, 4, 1, 3这四(4=5-1)种情况的…hash表如果是用取模的方法也要模一个大质数来减少冲突,出题人也会这样来 希望减少你“蒙对“的概率。而模1e9+7又有一个很好的特点,就是相加不爆int,相乘不爆long long。PS:另外,我觉转载 2022-01-17 23:50:50 · 4836 阅读 · 0 评论 -
Java——检索一段话中出现次数最多的英文单词
https://blog.youkuaiyun.com/u012325167/article/details/50884373原创 2022-01-17 15:55:47 · 322 阅读 · 0 评论 -
Java 打印乘法口诀表(双层for循环)
该题锻炼双层for循环public class multitables { public static void main(String[] args) { for (int i=1;i<10;i++){ //控制行数,9行 for (int j=1;j<=i;j++){ //控制列数,9列, //对于第一行,当i=1时,j只能等于1 System.out.print(j+"*"+i+"="+i原创 2022-01-16 22:55:02 · 428 阅读 · 0 评论 -
蓄水池抽样算法
经济学家用一个公式表达复利效应:(1+r)^n,r 代表你正在做的事,n 代表时间,只要 r 为正,即你在做正确的事,时间就会为你带来奇迹。原创 2022-01-16 09:50:20 · 106 阅读 · 0 评论 -
Java 树 二叉查找树(又二叉排序树)
经济学家用一个公式表达复利效应:(1+r)^n,r 代表你正在做的事,n 代表时间,只要 r 为正,即你在做正确的事,时间就会为你带来奇迹。原创 2022-01-15 21:09:26 · 170 阅读 · 0 评论 -
数据结构之delete删除操作代码
经济学家用一个公式表达复利效应:(1+r)^n,r 代表你正在做的事,n 代表时间,只要 r 为正,即你在做正确的事,时间就会为你带来奇迹。原创 2020-05-23 19:55:22 · 2411 阅读 · 0 评论 -
数据结构之insert插入代码
经济学家用一个公式表达复利效应:(1+r)^n,r 代表你正在做的事,n 代表时间,只要 r 为正,即你在做正确的事,时间就会为你带来奇迹。原创 2020-05-23 18:31:42 · 2204 阅读 · 0 评论 -
01背包-动态规划-java
5kg的袋子动态规划,动态的变化,袋子一点一点增加容积j(j<m)开始:步骤以及思想,心中有个矩阵,把所有结果列出来,然后选择搭配着装ps(对人来说的步骤越简单,对机器越复杂,对人来说步骤越复杂繁琐,对机器越简单)因为机器计算快,所以不用担心机器算不出来最优解,我们只需要把所有结果写出来,然后让机器自己去拼吧!(有种全排列的感觉)装第一个物品,(重量为1,价值为6)【袋子...原创 2022-01-13 14:53:18 · 124 阅读 · 0 评论 -
JAVA 双向链表
实现代码package demo0110.algorithm.linear;import java.util.Iterator;/** * @Author: 从南到北 * @Date: 2022/01/10/14:43 */public class TowWayLinkList<T> implements Iterable<T>{ //初始化头节点 private Node head; private Node last; priv.原创 2022-01-10 15:55:42 · 268 阅读 · 0 评论 -
ASCII码
字符ASCII码1-1048-57A-Z65-90a-z97-122原创 2022-01-08 23:15:28 · 417 阅读 · 0 评论 -
排序稳定性的作用
参考链接:https://www.bilibili.com/video/BV13g41157hK?p=5原创 2022-01-07 16:24:13 · 202 阅读 · 0 评论 -
Java 队列
使用链表实现队列:package cn.itcast.algorithm.linear;import java.util.Iterator;/** * @Author: 从南到北 * @Date: 2022/01/06/20:55 */public class Queue<T> implements Iterable<T> { @Override public Iterator<T> iterator() { //接原创 2022-01-06 22:02:47 · 373 阅读 · 0 评论 -
JAVA 栈
经济学家用一个公式表达复利效应:(1+r)^n,r 代表你正在做的事,n 代表时间,只要 r 为正,即你在做正确的事,时间就会为你带来奇迹。原创 2022-01-04 23:58:13 · 239 阅读 · 0 评论 -
509. 斐波那契数(动态规划操作步骤)
如果要用一句简短的话来描述爱情我想我一定会写下你的名字原创 2021-12-07 10:43:13 · 133 阅读 · 0 评论 -
汉诺塔求解
贵在坚持原创 2021-12-07 10:35:41 · 80 阅读 · 0 评论 -
时间复杂度大小比较
参考链接:https://blog.youkuaiyun.com/qwertyuiopasdfgg/article/details/89479589https://blog.youkuaiyun.com/qq_30815237/article/details/90766878转载 2021-11-24 16:55:28 · 481 阅读 · 0 评论 -
排序总结-各种排序的时间复杂度
先找第一个元素的 最佳位置之后就分成了两半之后确定左边第一个元素的位置只剩一个元素的时候就不用劈开了h的值赋给l,且h的值不变经过最终l和h指向同一个元素时,找到一个元素的最终位置排一次只能确定一个元素的位置关键二字:“移”“赋”,“重合 ”...原创 2021-11-23 22:06:44 · 83 阅读 · 0 评论