第八章学习小结

第八章的内容是排序
排序的稳定性:如果两个大小相同但位置的数据在排序之后它们的位置发生了改变,则该排序方法不稳定,否则为稳定。
插入排序:
(1)直接插入排序:
将要排序的数据放在监视哨即0号下标的位置,然后比较大小,再将数据后移,直到找到插入的位置
时间复杂度为O(n^2),空间复杂度为O(1)
(2)折半插入排序:
与二分法类似,不断对折平分,改变上界和下界,直到找到数据合适的位置,再将数据插入
时间复杂度为O(n^2),空间复杂度为O(1)
 
交换排序:
(1)冒泡排序:
两两比较相邻的关键字,如果是逆序,则交换
时间复杂度O(n^2),空间复杂度O(1)(用的比较多)
(2)快速排序:
一次交换,解决多次逆序,通常以   左边界、右边界或者左右边界之和/2    之一为中心,将左边排序,将右边排序
时间复杂度O(nlog2n),空间复杂度O(n)
 
选择排序:
(1)简单选择排序:
不断选择最小的数据将它放到未排序序列的最前面,最后一个就一定默认为最大值
时间复杂度O(n^2),空间复杂度O(1)
(2)堆排序:
序列可以看做是完全二叉树,先调整堆(变为大根堆或者小根堆),然后不断将顶的记录(最大值)与未排序的最后一个记录(最小值)交换
大根堆:每个根结点都大于它的左右孩子结点
小根堆:每个根结点都小于它的左右孩子结点
时间复杂度O(nlog2n),空间复杂度O(1)
 
归并排序:
将序列分为两份,然后再分别将左右两份又不断分成两份,直到分成每份只有两个数据,然后将数据排序,再两份两份的合并、排序
时间复杂度O(nlog2n),空间复杂度O(n)

posted @ 2020-07-12 23:33  冯培俊  阅读(64)  评论(0编辑  收藏  举报