黄梓财20191003015

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

第八章学习的内容是排序,指的是将关键字按非递减或者非递增的顺序进行排列

排序具有稳定性:如果两个大小相同但位置的数据在排序之后它们的位置发生了改变,则该排序方法不稳定,否则为稳定。

插入排序:

(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 on 2020-07-12 21:58  黄梓财  阅读(82)  评论(0编辑  收藏  举报