【8】排序——王道考研

目录

 

8.1 排序

8.1.1基本概念

8.1.2 稳定性

8.1.3 内部排序 vs 外部排序

8.1.4 分类

8.2 插入排序

8.2.1 直接插入排序 (O(n2) 稳定 可链式存储)

8.2.2 折半插入排序(O(n2) 稳定)

8.2.3 希尔排序(不稳定 O(n2) O(n1.3) 顺序存储)

8.3 交换排序

8.3.1 冒泡排序(O(n2) 稳定 可以链式存储)

8.3.2 快速排序(O(n2) O(nlogn)不稳定)

8.4 选择排序

8.4.1 直接选择排序(O(n2) 不稳定)

8.4.2 堆排序

8.5 其他排序

8.5.1 归并排序

8.5.2 基数排序

8.6 内部排序算法的比较和应用

8.7 外部排序

8.7.1 归并排序的思想

8.7.3 败者树

8.7.4 置换-选择排序

8.7.5 最佳归并树


8.1 排序

8.1.1基本概念

8.1.2 稳定性

8.1.3 内部排序 vs 外部排序

8.1.4 分类

8.2 插入排序

8.2.1 直接插入排序 (O(n2) 稳定 可链式存储)

  • 使用了哨兵

8.2.2 折半插入排序(O(n2) 稳定)

  • 写一下试试

8.2.3 希尔排序(不稳定 O(n2) O(n1.3) 顺序存储)

  • 又名 缩小增量排序

  • trick: 多组数据同时进行直接插入排序

8.3 交换排序

8.3.1 冒泡排序(O(n2) 稳定 可以链式存储)

8.3.2 快速排序(O(n2) O(nlogn)不稳定)

  • 这里交换的方式很巧妙

  • 使用树的结构来理解,当划分的越均匀,,树越平衡,那么树的高度最小

  • 最坏的情况(数组有序时)

  • 如何选取 privot
    •  前中后三个元素,进行比较后,确定大小居中的元素

8.4 选择排序

8.4.1 直接选择排序(O(n2) 不稳定)

8.4.2 堆排序

  • 小根堆:根节点存储的关键字是其子树中最小的

  • 堆的初始化

  • 堆排序(O(nlogn) 不稳定)

  • 堆的插入

8.5 其他排序

8.5.1 归并排序

  • 合并两个有序线性表

  • 归并排序(总比较次数是不变的,O(nlogn) 稳定)

8.5.2 基数排序

  • 分配和收集

8.6 内部排序算法的比较和应用

8.7 外部排序

8.7.1 归并排序的思想

r-划分的段数

d-读写总次数

t_io-一个归并段的一次读(写)用时

S-归并的趟数

n-1-每次归并时的比较次数

  • 减少IO读写--增加归并路数(减少归并趟数)

8.7.3 败者树

m个归并段,n个元素

  • 使用失败树后,S(n-1)(m-1)和m无关了,但是无限增大m是不行的

8.7.4 置换-选择排序

划分变长的划分段,并使之有序

8.7.5 最佳归并树

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值