数据结构知识点复习归纳(三)

第八章.排序
1.直接插入排序:平均时间复杂度O(n^2)
若待排序列为接近有序,时间复杂度可以达到O(n)
2.希尔排序不稳定
3.快速排序
空间复杂度:最好O(logn),最坏O(n),平均O(logn)
时间复杂度:最坏O(n^2),序列基本有序或逆序
平均O(nlogn)

4.简单选择排序
比较次数与序列初始状态无关,始终为n*(n-1)/2次
不稳定

5.堆排序
(1)n个结点的完全二叉树,最后一个非终端结点 (n/2向下取整)
(2)建堆:从最后一个非终端结点开始,依次向下调整
插入:新结点放在堆的末端,然后该结点再向上调整
(3)从1亿个数中选前100个最大值
用一个大小为100的数组,读入前100个数,建立小根堆。
再依次读剩下的数,若小于堆顶元素则舍弃,否则代替原根
结点的数,再向下调整。待数据读取完毕,堆中100个数字为所求。
(4)
空间复杂度:O(1)
建堆时间:O(n),建堆后有n-1次向下调整过程
时间复杂度:O(nlog2n)
不稳定

6.归并排序
空间复杂度:O(n)
时间复杂度:共需要 (log2(n)向上取整 ) 趟,每趟O(n)
总时间复杂度 O(nlog2n)

7.基数排序
稳定

8.冒泡排序
平均 O(n^2)
最好 O(n)

9.外部排序
(1)外部排序:将待排序记录存储在外存上,排序时将数据一部分一部分地调入内存进行排序
(2)外部排序时间代价主要考虑磁盘访问次数(IO次数)
(3)减少IO次数:增大归并路数,从而减少归并趟数
(4)大致流程
1.内部排序,得到初始归并段
2.对初始归并段进行内部归并,依此类推,最终得到整个有序文件
(5)内部归并时间随着路数上升而上升,因此不能用常规的内部归并算法,而是引入了败者树
(6)若归并路数k过大,则输入缓冲区数量要变大,每个缓冲区容量减小,IO次数增大

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值