数据结构中的各种内部排序的排序过程
来源:互联网 发布:数控编程什么软件好用 编辑:程序博客网 时间:2024/06/05 18:01
总结自《数据结构教程》,书上的太理论化了,本文简单梳理一下给你一组数字怎么去排序。本篇不涉及代码和理论,只说说排序过程。
一、插入排序:
【例子】序列:5,7,9,3,1
第一趟:[5] 7 9 3 1
第二趟:[5 7] 9 3 1
第三趟:[5 7 9] 3 1
第四趟:[3 5 7 9] 1
第四趟:[1 3 5 7 9]
[ ]内是已经排好序的,剩下是待排的
①选取待排的第一个数
②和[ ]内的值比较,放在相应位置
③重复执行①②,直到排完。
整个排序过程需要进行n(n-1)/2次比较。
所需的结点比较次数最少为n-1
最多为n(n-1)/2
二、选择排序
例:一组数5,8,2,9,6,选择排序。
第一趟:[2] 5 8 9 6
第二趟:[2 5] 8 9 6
第三趟:[2 5 6] 8 9
第四趟:[2 5 6 8] 9
第五趟:[2 5 6 8 9]
类似于插入,只不过这次是选择待排序列中最小值跟已经排好的比较。
比较次数为n/n-1)/2,时间复杂度O(n²)
三、冒泡排序
例:7,3,8,2,9
第一趟:3 7 2 8 9
第二趟:3 2 7 8 9
第三趟:2 3 7 8 9
待排序的n个结点已排序,则只要执行一遍比较结束排序。即n-1
整个排序过程最多进行n(n-1)/2次比较。
四、合并排序
例:10,8,12,7,5,合并排序
第一趟:(8,10)(7,12)5
第二趟:(7,8,10,12)5
第三趟:5,7,8,10,12
简而言之就是先分组再排序。
分组的元素数量呢,第一次每组两个,那么第二次每组就是四个,第三次每组就是八个……
倒数第二次就是前面的所有元素一组,跟最后一个元素单独一组,一共两组。比较。
然后就大功告成。
合并排序的执行时间是O(nlog2n)
五、快速排序
快排就是很快的意思啦~
例子:46,26,22,68,48,42,36,84,66
趟数 控制值 序列
0 46 [46 26 22 68 48 42 36 84 66]
1 36/48 [36 26 22 42] 46 [48 68 84 66]
2 22/68 [22 26] 36 [42] 46 48 [68 84 66]
3 26/68 22 [26] 35 42 46 48 [66] 68 [84]
4 26/66/8422 26 36 42 46 48 66 68 84
①首选选取控制值(通常是第一个结点)
②两个指针i和j分别标上一头一尾
③从尾开始,找到比控制值小的数值就挪到前面i的位置,否则把这个值抄下放在对应位置。
④然后从头开始,遇到控制值小的就放到后面j的位置,否则把这个值抄下放在对应位置。
⑤两个指针重合时,说明除了控制值之外的值已经扫描结束(但并不意味着排序好了),在这个位置上把控制值插入进去。
⑥本趟结束,执行第二趟,此时第一趟的控制值作为分支,不看,剩下的值被另外分组,然后从分组里面开设执行①~⑤趟。
⑦重复执行直到排序完成。
在什么情况下,快速排序需要的排序次数比较多?
答:每次所选的控制值为最小值。时间复杂度为O(n²)
六、基数排序
例:92 35 67 76 84 51
第一趟:51→92→84→35→67→76
第二趟:35→51→67→76→84→92
基数排序中,第一趟把个位按从小到大排序,第二趟把十位按从小到大排序。
七、各种排序的稳定性
稳定的:
1、插入排序。适合结点个数较少的场合。
2、冒泡排序。值相等的结点不会互相交换。
3、合并排序。
4、基数排序。
不稳定的:
1、选择排序
2、希尔排序
3、快速排序
4、堆排序
- 数据结构中的各种内部排序的排序过程
- 数据结构各种内部排序课程设计
- 数据结构中的各种排序
- 数据结构中的各种排序
- 数据结构中各种内部排序算法的比较
- 数据结构中各种内部排序算法的比较
- 数据结构中各种内部排序算法的比较
- 数据结构中各种内部排序算法的比较
- 数据结构中各种内部排序算法的比较
- 各种内部排序的比较
- 各种内部排序的比较
- 各种内部排序的总结
- 数据结构中的各种排序算法
- 【数据结构之排序11】各种内部排序方法的比较和选择
- 各种内部排序算法!
- 各种内部排序
- 各种内部排序
- 各种内部排序算法
- [BZOJ1937][Shoi2004]Mst 最小生成树(KM)
- node.js 常用工具
- Linux进程间通信预习(二)
- 编译环境测试
- hdu 1181 变形课 dfs
- 数据结构中的各种内部排序的排序过程
- c语言中的高精度数据的存储
- list set map 重写的equals方法
- Java内部类:下
- 前端之js总结
- csdn
- Android架构模式MVP的在实际中的应用
- JAVAWEB第三天JS的BOM和document对象
- 《TCP/IP详解 卷1》 笔记: TCP协议