数据结构--8大排序
2014-10-10 11:56
232 查看
大学时代数据结构学的不好,奈何出来之后许多公司都有类似的面试题,“说说你知道的排序方法”,当时就傻眼了,话不多说,进入主题
8大排序有哪8种呢?
78 20 30 40 55 66
选中78作为一个序列
将后面的数20与其比较
小于78放在前面
(20 78)
然后将(20 78)作为序列与后面数比较
依次类推就ok了
(如果碰到插入相等元素,插入相等元素后面即可)
1 2 3 4 5 6 7 8 9 10
取数值的一半5作为一个集合的宽度
1 2 3 4 5 6
2 3 4 5 6 7
3 4 5 6 7 8
4 5 6 7 8 9
5 6 7 8 9 10
分别进行比较
然后取5的一半3作为集合宽度
最后取1作为宽度比较即可
选中这组数中最小的与22交换
19 48 49 64 33 22
然后在剩下的数中选择最小的与第二个数交换
依次类推即可
选中一个数55
把小于55放在一组,大于55放在一组
(49 33 22 19) 55 (88 66 77)
然后在前面选择49 后面选择88比较
(33 22 19)49 55 (66 77)88
依次类推即可
(49 38 65 97) (76 13 27)
先分解
(49)(38)(65)(97)(76)(13)(27)
在两两比较
(38 49)(65 97)(13 76)(27)
然后在比较.......
稳定性----直接插入,冒泡排序,归并排序,基数排序都是稳定的~
8大排序有哪8种呢?
1.插入排序--直接插入排序
这里有一组数据78 20 30 40 55 66
选中78作为一个序列
将后面的数20与其比较
小于78放在前面
(20 78)
然后将(20 78)作为序列与后面数比较
依次类推就ok了
(如果碰到插入相等元素,插入相等元素后面即可)
2.插入排序--希尔排序
比如有10个数1 2 3 4 5 6 7 8 9 10
取数值的一半5作为一个集合的宽度
1 2 3 4 5 6
2 3 4 5 6 7
3 4 5 6 7 8
4 5 6 7 8 9
5 6 7 8 9 10
分别进行比较
然后取5的一半3作为集合宽度
最后取1作为宽度比较即可
3.选择排序--简单选择排序
有一组数 22 48 49 64 33 19选中这组数中最小的与22交换
19 48 49 64 33 22
然后在剩下的数中选择最小的与第二个数交换
依次类推即可
4.选择排序--堆排序
就是对完全二叉树的排序5.交换排序--冒泡排序
在一组数中,自上而下对相邻的两个数依次比较和调整,较大的下沉,较小的往上冒6.交换排序--快速排序
49 55 33 22 19 88 66 77选中一个数55
把小于55放在一组,大于55放在一组
(49 33 22 19) 55 (88 66 77)
然后在前面选择49 后面选择88比较
(33 22 19)49 55 (66 77)88
依次类推即可
7.归并排序
将两个或以上有序表合并成新的有序表(49 38 65 97) (76 13 27)
先分解
(49)(38)(65)(97)(76)(13)(27)
在两两比较
(38 49)(65 97)(13 76)(27)
然后在比较.......
8.基数排序
按照低位先排序,再收集;然后按照高位排序,再收集,直到最高位。稳定性----直接插入,冒泡排序,归并排序,基数排序都是稳定的~
相关文章推荐
- 图解"数据结构--内部排序算法"----交换排序:冒泡排序、快速排序
- 数据结构学习笔记 --- 排序(冒泡排序、快速排序)
- (数据结构)排序--直接插入排序
- 【数据结构】选择排序
- 数据结构排序之直接插入排序
- 数据结构排序之使用JAVA范型完成2路排序
- 数据结构 直接插入排序
- 数据结构--快速排序
- 数据结构(二)排序总结
- 重拾数据结构:简单排序
- 数据结构和算法15 之二叉树排序
- 【python】python数据结构(五)——排序:直接选择排序
- 数据结构学习系类列十六-排序总结篇
- 常用的算法和数据结构分析(查找和排序)
- 数据结构 排序 基数排序
- 数据结构 求链表的长度以及用冒泡排序的算法对链表中的值进行排序
- 【数据结构练习】排序——堆排序和快排
- 数据结构中的排序-直接插入排序法(二)
- 数据结构之插入排序之希尔排序(缩小增量排序)—参考整理严蔚敏数据结构
- 数据结构- 快速排序