![](https://img-blog.csdnimg.cn/20190126123026989.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
排序算法
经典排序算法分析与实现
15wylu
小学生程序员
展开
-
冒泡排序 Bubble Sort
文章目录冒泡排序1. 基本原理2. 算法步骤3. 动画演示4. 参考实现5. 复杂度分析6. References冒泡排序1. 基本原理依次比较相邻的两个元素,如果相邻的两个元素的顺序是错误的,则将它们交换,直至没有元素需要交换,排序完成。在实现上有两种方法:每一轮让未排序的最大元素交换到正确位置,以下称之为"最大冒泡"每一轮让未排序的最小元素交换到正确位置,以下称之为"最小冒泡"...原创 2019-01-30 12:15:40 · 248 阅读 · 0 评论 -
选择排序 Select Sort
文章目录选择排序1. 基本原理2. 算法步骤3. 动画演示4. 参考实现5. 复杂度分析6. References选择排序1. 基本原理初始时在序列中找到最小(大)元素,放到序列的起始(末尾)位置作为已排序序列;然后,再从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的尾部(首部)。以此类推,直到所有元素均排序完毕。2. 算法步骤首先在未排序序列中找到最小(大)元素,存放到排序...原创 2019-01-30 12:21:52 · 177 阅读 · 0 评论 -
插入排序 Insert Sort
文章目录插入排序1. 基本原理2. 算法步骤3. 动画演示4. 参考实现5. 复杂度分析6. References插入排序1. 基本原理每步将一个待排序的元素,将其插入前面已排好序的部分中,直到全部插入完为止。2. 算法步骤将待排序序列第一个元素看做已排序序列,把第二个元素到最后一个元素当成是未排序序列从未排序序列中取出下一个元素记为 a,在已排序的序列中从后向前扫描如果该元素(已...原创 2019-01-30 12:24:30 · 200 阅读 · 0 评论 -
希尔排序 Shell Sort
文章目录希尔排序1. 基本原理2. 算法步骤3. 算法图解4. 参考实现5. 复杂度分析6. References希尔排序1. 基本原理希尔排序,也称缩小增量排序,是插入排序的一种更高效的改进版本,是不稳定的排序算法。希尔排序是基于插入排序的以下两点性质而提出的改进方法:插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率但插入排序一般来说是低效的,因为插入排序每...原创 2019-01-30 12:28:16 · 345 阅读 · 0 评论 -
归并排序 Merge Sort
文章目录归并排序1. 基本原理2. 算法步骤3. 算法图解4. 动画演示5. 参考实现6. 复杂度分析7. References归并排序1. 基本原理归并排序算法是分治策略实现对n个元素进行排序的算法。其基本思想是:将待排序元素分成大小大致相同的2个子集合,分别对2个子集合进行排序,最终将排好序的子集合合并成为所要求的排好序的集合。2. 算法步骤申请空间,使其大小为两个已经排序序列之...原创 2019-01-30 12:36:39 · 321 阅读 · 0 评论 -
快速排序 Quick Sort
文章目录快速排序1. 基本原理2. 算法步骤3. 算法图解4. 动画演示5. 参考实现6. 复杂度分析7. References快速排序1. 基本原理快速排序是图灵奖得主 C. R. A. Hoare 于 1960 年提出的一种划分交换排序,它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。分治法的基本思想是:将原问题分解为若干个规模更小但结构与...原创 2019-01-30 12:40:03 · 286 阅读 · 0 评论 -
堆排序 Heap Sort
文章目录堆排序1. 基本原理2. 算法步骤3. 算法图解3.1 构建二叉堆3.2 堆排序过程4. 动画演示5. 参考实现6. 复杂度分析7. References堆排序1. 基本原理传送门 堆、堆排序、优先队列2. 算法步骤由输入的无序数组构造一个最大堆,作为初始的无序区把堆顶元素(最大值)和堆尾元素互换把堆(无序区)的尺寸缩小1,并调用sinking函数,目的是把新的数组顶端数据...原创 2019-01-30 12:49:08 · 231 阅读 · 0 评论 -
计数排序 Counting Sort
文章目录计数排序1. 基本原理2. 算法步骤3. 动画演示4. 参考实现5. 复杂度分析6. References计数排序1. 基本原理使用一个新的数组记录每个元素出现的次数,然后直接遍历输出这个数组里面的每一个大于0的元素的下标值,下标值输出的次数为对应的计数。2. 算法步骤花O(n)的时间扫描一下整个序列 arr,获取最小值 min 和最大值 max开辟一块新的空间创建新的数组 ...原创 2019-01-30 12:54:13 · 405 阅读 · 0 评论 -
桶排序 Bucket Sort
文章目录桶排序1. 基本原理2. 算法步骤3. 动画演示4. 参考实现5. 复杂度分析6. References桶排序1. 基本原理桶排序也叫箱排序。工作原理是将数组元素映射到有限数量个桶里,利用计数排序可以定位桶的边界,每个桶再各自进行桶内排序(使用其它排序算法或以递归方式继续使用桶排序)。2. 算法步骤设置固定数量的空桶把数据放到对应的桶中对每个不为空的桶中数据进行排序拼接不...原创 2019-01-30 12:56:30 · 361 阅读 · 0 评论 -
基数排序 Radix Sort
文章目录基数排序1. 基本原理2. 算法步骤3. 动画演示4. 参考实现5. 复杂度分析6. References基数排序1. 基本原理将所有待比较正整数统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始进行基数为10的计数排序,一直到最高位计数排序完后,数列就变成一个有序序列(利用了计数排序的稳定性)。2. 算法步骤将所有待比较数值(正整数)统一为同样的数位长度,数位较短...原创 2019-01-30 12:59:46 · 705 阅读 · 0 评论