25考研数据结构复习·8.3选择排序·8.4归并排序/基数排序·8.5外部排序

目录

选择排序

简单选择排序

算法原理

性能

👩‍💻 堆排序

顺序存储的“完全二叉树”

算法思想(以大根堆为例)

建堆

排序

特性

插入

删除

关键字对比次数

归并排序、基数排序

归并排序

👩‍💻 Merge(归并)

归并排序算法

性能

基数排序

算法思想

性能

擅长处理

外部排序

外部排序

败者树

置换-选择排序

最佳归并树

理论基础

如何虚构

补充虚段


选择排序

简单选择排序

算法原理

  1. 每一趟在待排序元素中选取关键字最小的元素加入有序子序列
  2. 必须进行总共n-1趟处理

性能

  1. 👩‍💻 时间复杂度:O(n^2)(始终是)
  2. 空间复杂度:O(1)
  3. 稳定性:不稳定
  4. 适用性:顺序表、链表都可以

👩‍💻 堆排序

顺序存储的“完全二叉树”
  1. 结点i的左孩子是2i;右孩子是2i+1;父节点是i/2
  2. 编号≤n/2的结点都是分支节点

大根堆(根 ≥ 左、右);小根堆(根 ≤ 左、右)

算法思想(以大根堆为例)

建堆
  1. 编号≤n/2的所有结点依次“下坠”调整(自底向上处理各分支节点)
  2. 👩‍💻 调整规则:小元素逐层“下坠”(与关键字更大的孩子交换)

排序
  1. 将堆顶元素加入有序子序列(堆顶元素与堆底元素交换)
  2. 堆底元素换到堆顶后,需要进行“下坠”调整,恢复“大顶堆”的特性
  3. 上述过程重复n-1趟

特性

  1. 空间复杂度:O(1)
  2. 时间复杂度:建堆O(n)、排序O(nlogn);总的时间复杂度O(nlog2n)
  3. 稳定性:不稳定
  4. 基于大根堆的堆排序得到“递增序列”,基于小根堆的堆排序得到“递减序列”

插入

  1. 新元素放到表尾(堆底)
  2. 根据大/小根堆的要求,新元素不断“上升”,直到无法继续上升为止

删除

  1. 被删除元素用表尾(堆底)元素替代
  2. 根据大/小根堆的要求,替代元素不断“下坠”,直到无法继续下坠为止

关键字对比次数

  1. 每次“上升”调整只需对比关键字1次
  2. 每次“下坠”调整可能需要对比关键字2次,也可能只需对比1次

</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Annabelle.02

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值