![](https://img-blog.csdnimg.cn/20210404091930993.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法学习
从最简单的算法开始,一步步进入算法地世界
喝粥少年
圣堂武士,亮出光刃
展开
-
说明
博主的算法学习参考一位大佬的笔记图解算法原创 2021-04-04 09:17:09 · 82 阅读 · 0 评论 -
选择,冒泡,插入排序
选择排序参考:liweiwei1419Learning-Algorithms-with-Leetcode链接:https://www.yuque.com/liweiwei1419/algo/pbpdec时间复杂度 O(n^2)空间复杂度O(1) 即temp特点不稳定原地排序交换次数最少思路以i作为分界线,[0,i-1]的部分为排定的部分,从未排定的部分选一个最小的和i交换就像排队一样,每次(从一群人里选一个最小的)和(排在已经排好队的后面的人)交换选到倒数第二个人的时原创 2021-03-23 21:43:08 · 74 阅读 · 0 评论 -
希尔排序
希尔排序平均时间复杂度O(nlogn) 最坏O(n^2) 最好O()空间复杂度O(1)不稳定思路前面我们实现了插入排序,插入排序的特点是在基本有序或数据量小的情况下性能优异,希尔排序就是高级版的插入排序,就是在插入排序之前,对数据进行预处理处理的方法为:因为插入排序在数据量小的情况下性能优异,所以希尔排序先对数据进行分组,减少每组的数据量,对每组使用插入排序.然后再逐渐地减少分组的数量,使每组的数据量增加,但是这时候因为之前的处理,数据已经变得基本有序,此时使用插入排原创 2021-03-27 09:49:19 · 68 阅读 · 0 评论 -
你一定可以理解的归并排序
归并排序时间复杂度O(nlogn)空间复杂度O(n)稳定思路使用递归的方式不断切分子区间,当区间长度小于一定值后,对小区间采取插入排序,插入排序在小区间,基本有序的情况下的性能十分优异写代码的时候还是有很多坑的,思路要时刻保持清醒,特别是在确定数组索引的时候`,一定要清楚地知道想干神魔//基础版public static void main(String[] args) { int [] nums={8,6,5,9,88,4,4,2,6,5,7,1原创 2021-04-04 09:08:08 · 46 阅读 · 0 评论 -
你一定要看的快速排序 两路快排and三路快排
快速排序时间复杂度O(nlogn) 对于基本有序的数据是不友好的空间复杂度依照具体算法而定不稳定思路还是用到了递归的思路,在一趟中选择第一个(其实可以随机选择一个)作为基准pivot,然后对数据进行切分将通过切分,我们要达到这样一个效果:把「切分元素」放在排序以后最终应该呆的位置。【小于等于基准值的元素】基准值【大于等于基准值的元素】,然后对左边和右边再进行一次快速排序,递归地进行下去看到这里你或许还不明白,玛徳这有什么用,接下来我来给大家好好说道说道,好好理解理解快速排原创 2021-04-04 09:10:26 · 228 阅读 · 0 评论