排序算法
文章平均质量分 77
小菜鸡的蜕变之路
长路漫漫,若能坚持,未来可期,加油~
展开
-
与数组初始状态无关的内排序算法
转自:https://www.cnblogs.com/Xieyang-blog/p/8340578.html首先,与初始状态无关分为几种情况1、算法复杂度与初始状态无关;2、元素总比较次数与初始状态无关;3、元素总移动次数与初始状态无关。【其实还有一种就是总排序趟数与初始状态无关,由于分析简单,除了快速排序的排序次数(递归深度)与关键字选择(初始状态)有关,还有一个优化后的冒泡...转载 2019-07-18 10:44:46 · 9647 阅读 · 4 评论 -
冒泡排序及其优化
我偶然看了一篇写的比较好冒泡排序优化的博客,自己整理了一下,分享给大家,一起学习。若有错误,欢迎大家指正~冒泡排序(BubbleSort)图片来自:https://blog.csdn.net/u013457167/article/details/81989207复杂度和稳定性情况:最好的时间复杂度:O(n)最坏的时间复杂度:O(n²)平均的时间复杂度:O(n²)空间复杂度:O...转载 2019-09-11 11:43:41 · 281 阅读 · 0 评论 -
排序刷题笔记
干货来啦:有向无环图才能进行拓扑排序。 在待排序的元素序列基本有序的前提下,效率最高的排序方法是?(比较最坏情况下的时间复杂度) "list采用链式结构存储,在C++ STL中的list采用双向链表存储,比较适合用快速排序进行排序,这是由快速排序不需要随机访问元素的特点决定的。冒泡排序适合list,但是算法复杂度为O(n^2),没有快速排序快。 二分插入排序算法适合顺序存储情况,不...原创 2019-07-28 20:46:06 · 612 阅读 · 0 评论 -
基数排序(桶排)
基数排序基本思想:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。复杂度和稳定性情况:最好的时间复杂度:O(d *n) 最坏的时间复杂度:O(d *n) 平均的时间复杂度:O(d *n) 空间复杂度:O(n) 稳定性:稳定算法步骤:将所...转载 2019-07-28 14:57:21 · 205 阅读 · 0 评论 -
归并排序
归并排序原理:归并排序的原理其实就是先分解再合并,将原始数组不断折半拆分,直到拆到不能分;然后开始两个块合并成一个块,不断地合并直到把所有块合并好。下图是原理演示,绿色部分就是拆分过程,蓝色部分就是结合过程。复杂度和稳定性情况:最好的时间复杂度:O(nlog n) 最坏的时间复杂度:O(nlog n) 平均的时间复杂度:O(nlog n) 空间复杂度:O(n) 稳定性:稳定...转载 2019-07-28 11:36:18 · 208 阅读 · 0 评论 -
快速排序(递归版和非递归版)
基本思想:通过一趟排序将要排序的数据分割成独立的两部分,分割点左边都是比它小的数,右边都是比它大的数。转载 2019-07-17 16:18:26 · 475 阅读 · 0 评论 -
堆排
堆排步骤:1、放数据2、建堆(大根堆或者小根堆)第一次创建大根堆从中间节点开始,依次到第一个节点,以后都从第一个节点开始,因为其他的之前排好序了。注:大根堆:所有的父节点都大于它自己本身的子节点。小根堆:所有的父节点都小于它自己本身的子节点。为了使数组下标和堆下标对应,数组a[0]不存数据,堆的根节点下标为1,子节点下标依次递增。3、排序复杂度和稳定性情况:...原创 2019-07-07 18:20:40 · 280 阅读 · 0 评论 -
直接插入排序
插入排序是将数组中的元素逐一与已排序好的数据进行比较,先将前两个元素排好,再讲第三个元素插入适合的位置,也就是说这三个元素仍然是已排序好的,接着将第四个元素加入,重复此步骤,直至排序完成为止。原创 2019-07-16 22:04:20 · 189 阅读 · 1 评论 -
直接选择排序
直接选择排序动态图来自:https://blog.csdn.net/sds15732622190/article/details/52903687基本思想:第一趟:从第一个元素开始,将后面n-1个元素进行比较,记录其中最小元素的下标,然后将标记的最小的元素和第一个元素进行交换; 第二趟:从第二个元素开始,将后面n-2个元素进行比较,记录其中最小元素的下标,然后将标记的最小的元素和...原创 2019-07-17 15:37:03 · 190 阅读 · 0 评论 -
排序算法之希尔排序
将待排序的数据元素分成若干个小组,对同一个小组内的数据元素用直接插入法排序;当完成了所有数据元素都在一个组内的排序后,排序过程结束。原创 2019-07-17 11:34:28 · 710 阅读 · 0 评论 -
各种排序算法的使用场景
排序使用场景:(1)若n较小(如n≤50),可采用直接插入或直接选择排序;当记录规模较小时,直接插入排序较好; 否则因为直接选择移动的记录数少于直接插人,应选直接选择排序为宜。(2)若文件初始状态基本有序(指正序),则应选用直接插人或冒泡排序为宜;(3)若文件初始状态随机分布,则应选用快速排序为宜;(4)若n较大,则应采用时间复杂度为O(nlgn)的排序方法:快速排序、堆排序或...转载 2019-09-29 20:33:39 · 2979 阅读 · 0 评论