了解你使用的 Sort ( 实现剖析) - 2
先上图, 本篇文章涉及 选择排序 中两种算法
往期:
- 了解你使用的 Sort ( 实现剖析) - 1中,介绍了 **插入排序** 和 **交换排序** 中四种排序算法
直接选择
思路:
- 遍历数组a[0]-a[n]并得出最小值a[j], 将a[0]与a[j]互换
- 遍历数组a[1]-a[n]并得出最小值a[j], 将a[1]与a[j]互换
- 循环直至结束
参考动画去理解 ↓
堆排序
核心:将数组构造成二叉堆↓(左侧数组,右侧对应二叉堆)
二叉堆(英语:binary heap)是一种特殊的堆,二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足堆特性:父节点的键值总是保持固定的序关系于任何一个子节点的键值,且每个节点的左子树和右子树都是一个二叉堆。当父节点的键值总是大于或等于任何一个子节点的键值时为“最大堆”。当父节点的键值总是小于或等于任何一个子节点的键值时为“最小堆”。
思路:
- 构建二叉堆 (注意如果子节点与父节点交换了位置,则交换位置后的父节点仍需要向下验证)
- 解构二叉堆为数组(注意二叉堆两个子节点的大小关系是不保证的,需要做比较)
理论性较强,参考动画和代码去理解 ↓
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 李璐慧的个人网站 - Aloea's Personal Website!
评论