1、排序算法可以分为内部排序和外部排序。内部排序是指数据记录在内存中排序,外部排序是指排序后的数据太大,无法一次性容纳所有排序后的记录,排序过程中需要访问外部存储。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图总结一下:
2、点击下图查看大图:
3、论时间复杂性
4、平方顺序(O(n2))排序各种简单排序:直接插入,直接选择和冒泡排序。
5、线性对数序(O(nlog2n))排序快速排序、堆排序和归并排序;
6、O (n1))和(是介于0和1之间的常数。谢尔分类
7、线性顺序(O(n))排序基数排序,此外还有桶和箱排序。
8、论稳定性
9、稳定排序算法:冒泡排序、插入排序、合并排序和基数排序。
10、不是一个稳定的排序算法:选择排序,快速排序,希尔排序和堆排序。
11、名词解释:
12、n:数据规模
13、k:“桶”的数量
14、就地:占用常量内存,不占用额外内存。
15、错位:占用额外的内存。
16、稳定性:排序后两个相等键值的顺序与排序前相同。
17、包含以下内容:
18、1.气泡分类
19、2.选择排序
20、3.插入排序
21、4.希尔排序
22、5.合并和排序
23、6.快速分类
24、7.堆排序
25、8.计数排序
26、9.桶分类
27、10.基数排序
28、排序算法的相关内容如下:冒泡排序算法
29、冒泡排序也是一种简单直观的排序算法。它反复访问要排序的序列,一次比较两个元素,如果它们的顺序不对,就切换它们。访问序列的工作一直重复到不需要交换为止,也就是说序列已经排序了。这种算法的名字来源于这样一个事实,即较小的元素将通过交换慢慢地“浮动”到序列的顶部。
30、选择排序算法
31、选择是一种简单直观的排序算法。不管什么数据进去都是O(n?)的时间复杂度。所以在使用的时候,数据量越小越好。唯一的好处可能就是不占用额外的内存空间。
32、插入排序算法
33、虽然插入排序的代码实现没有冒泡排序和选择性排序那么简单粗暴,但是它的原理应该是最容易理解的,因为玩过扑克的人应该都能秒懂。插入是最简单、最直观的排序算法。它的工作原理是在排序后的序列中从后向前扫描未排序的数据,找到对应的位置并插入。
34、希尔排序算法
35、Hill排序,也称为降序增量排序算法,是插入排序的一个更高效的改进版本。然而,希尔排序算法是不稳定的。
36、合并排序算法
37、归并排序是一种基于归并操作的有效排序算法。这个算法是分而治之的典型应用。
38、快速排序算法
39、快速排序是由Tony Hall开发的一种排序算法。平均来说,对N个项目进行排序需要 (nlogn)次比较。在最坏的情况下,需要进行 (N2)比较,但这种情况并不常见。事实上,快速排序通常比其他 (NLOGN)算法快得多,因为它的内循环可以在大多数架构中高效实现。
40、堆排序算法
41、堆排序是指利用堆的数据结构设计的一种排序算法。Heap是一种类似于完全二叉树的结构,同时满足heap的性质:即子节点的键值或索引总是小于(或大于)其父节点。堆排序可以说是利用堆的概念进行的一种选择性排序。
42、计数排序算法
43、计数排序的核心是将输入的数据值转换成键,存储在额外的数组空间中。作为一种线性时间复杂度的排序,计数排序要求输入数据必须是一定范围内的整数。
44、桶排序算法
45、桶排序是计数排序的升级版本。它利用了函数的映射关系,高效的关键在于这个映射函数的确定。
46、基数排序算法
47、基数排序是一种非比较整数排序算法。它的原理是把整数按照位数切割成不同的数,然后按照每个位数进行比较。由于整数也可以用特定格式表示字符串(如姓名或日期)和浮点数,所以基数排序不仅可以用于整数。