![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
北海冥鱼未眠
道路在身旁!
展开
-
最小生成树和最短路径算法
按照顶点递增的顺序不断增加顶点到树中来,增加的时候遍历已经选择的生成的树的所有的节点的边,找到权值最小的边并且没有被选中而且不会构成图的边加入到树中。最短路径和最小生成树不同的是最小生成树只能保证整个树的权值最小但是两个点的距离不一定最小,最短路径能够保证两个点之间的路径最小。按照边的权值递增的顺序构造最小生成树,每次选择边的权值最小的进行连接,如果构成图则跳过,直到所有的顶点都构造到树中。普利姆算法是将选中的顶点和未选择的顶点分成两个集合,复杂度和顶点的数量有关。科里斯卡尔算法则看的是边的数量。原创 2022-09-27 16:55:40 · 588 阅读 · 0 评论 -
完全背包问题求组合数和排列数
这个是完全背包问题的典型应用,由于只是求个数,不涉及到零钱排列情况不一样算两次的情况,所以两层for循环,这个与上面一题唯一不同的一点就是有序,顺序不同算两次,所以这里两层for循环的遍历顺序是。...原创 2022-07-30 09:33:17 · 387 阅读 · 0 评论 -
回溯算法-----473. 火柴拼正方形&&698. 划分为k个相等的子集
我觉得这个东西是需要大量的思考练习的,不要觉得花几个小时研究一道题浪费时间,其实你花两个小时,做了十题自己会的题,很爽,但是你的收获真的有比花两个小时做出了、彻底搞懂自己不会的这个题的收获多吗,我觉得不见得。说明一下这个我参考解答里面其实排序的时候并没有是降序排列,反而是升序排列,导致增加了时长,我把排序的代码注释掉之后,时长反而变短了许多。有四个桶,回溯的时候不停地遍历数组,在回溯的方法内部遍历桶,看这个桶能不能放下这个元素,能放下就放进去,这样就解决了。,真的受益良多,推荐给大家,也欢迎大家交流学习。.原创 2022-07-29 00:36:38 · 168 阅读 · 0 评论 -
排序算法时间空间复杂度
算法原创 2022-06-14 16:51:00 · 61 阅读 · 0 评论 -
排序算法时间空间复杂度
算法原创 2022-06-14 16:12:46 · 69 阅读 · 0 评论 -
快速排序算法
黑马视频地址 /** * 快速排序算法 * @param arry 要排序的数组 * @param left 数组的其实下标 * @param right 数组的终止下标 * @return 返回排序好的数组,原数组也被排序了,是同一个对象。 */ public static int[] quickSort(int[] arry,int left,int right){ int a = areaSort(arry, le原创 2022-03-03 14:06:35 · 71 阅读 · 0 评论 -
希尔排序算法
希尔排序,是插入排序的一种进阶排序算法,通过一个不断缩小的增量序列,对无序序列反复的进行拆分并且对拆分后的序列使用插入排序的一种算法,所以也叫作“缩小增量排序”或者“递减增量排序”。 既然希尔排序也是使用插入排序进行序列排序操作的,为什么会有希尔排序呢? 第一:对一个“几乎”已经排好序的无序序列,插入排序的效率是很高的,可以达到线性排序的效率。比如,当序列中只有一位元素没有在适当的位置,那么整个序列只需要移动该序列的位置即可达到完成排序的任务。 第二:但是一般的无序序列不是一个“几乎”已经排好序的序列,所以原创 2022-03-03 12:22:57 · 364 阅读 · 0 评论 -
插入排序算法
原理: 插入排序的基本思想是:将数组的第一个数认为是有序数组,从后往前(从前往后)扫描该有序数组,把数组中其余n-1个数,根据数值的大小,插入到有序数组中,直至数组中的所有数有序排列为止。这样的话,n个元素需要进行n-1趟排序! /** * 插入排序 * @param arry * @return */ public static int[] insertSort(int[] arry){ int len = arry.length;原创 2022-03-03 12:05:19 · 195 阅读 · 0 评论 -
选择排序算法
原理: 第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。 以此类推,直到全部待排序的数据元素的个数为零。 /** * 选择排序算法 * @param arry * @return */ public static int[] selectSort(int[] arry){ int len = arry.length; in原创 2022-03-03 10:49:59 · 43 阅读 · 0 评论 -
冒泡排序算法
/** * 冒泡排序算法 * @param arry * @return */ public static int[] buubleSort(int[] arry){ int len = arry.length; int temp; for (int i = 0; i < len-1; i++) { for (int j = 0;j<len-i-1;j++){原创 2022-03-03 10:39:19 · 46 阅读 · 0 评论 -
二分查找算法
public static int binarySearch(int[] arry ,int p){ int a = 0; int b = arry.length-1; int index = (b-a)/2+a; while (arry[index]!=p){ if (arry[index]>p){ b=index-1; index = (b-a)/原创 2022-03-03 10:22:43 · 58 阅读 · 0 评论