数据结构第八章

排序

插入排序:

直接插入排序

 

 


时间复杂度O(n^2)(比较n^2/2+移动n^2/2)

折半插入排序:每次通过折半查找法找到插入的位置。这样会比直接插入中使用的顺序查找法快

但时间复杂度仍为O(n^2)

希尔排序:先将待排序列分组,对每组进行直接插入排序,增加数据量重新分组。

是不稳定的排序

交换排序

冒泡排序:会先得到最大的数

 

 

时间复杂度为O(n^2)

快速排序:冒泡排序的改良,先选择一个枢轴,把比他小的数放在前面,比他大的数放在后面,形成两个相对有序的子表,在子表中重复操作,直到最后剩下一个数

时间复杂度约为O(nlog2n)

简单选择排序:每次遍历a[i]到a[n],选出最小数字提前。

时间复杂度也为O(n^2)

树形选择排序:先对n个记录两两比较,再对其中n/2个较小记录比较,如此重复直至选出最小。

 

堆排序:

 

堆顶元素是大于小面子树中所有元素的是大根堆

若从小到大排序,需要用到大根堆

如从大到小排序则要建立小根堆

堆排序不稳定。

归并排序:依次将元素两两归并并排序,然后对归并得到的集合再次进行两两归并后排序...直到只剩下一个集合。

时间复杂度为O(nlog2n)

但空间复杂度为O(n),需要开辟大量辅助存储空间。

 

posted @ 2020-07-11 16:21  宋沂澎  阅读(154)  评论(0编辑  收藏  举报