摘要:
前言 我们在之前的排序算法文章中,介绍了六种基于比较的排序算法:选择排序、冒泡排序、插入排序、归并排序、快速排序和堆排序,现在我们来总结一下每个算法对应的时间复杂度、空间复杂度以及稳定性 排序比较图 1. 稳定性 稳定性的意思就是对于两个值相等的元素,在排完序后,它们的相对位置没有发生改变,这样的算 阅读全文
摘要:
前言 如果你还不了解快速排序,强烈推荐你可以先移步到我的另外一篇博客 快速排序的引入 — 荷兰国旗问题 算法思路 我们先看看快排 1.0 的算法思路: 我们每次选择最后一个元素作为我们的基准值,然后我们将小于等于基准值的放在基准值左边,大于基准值的放在基准值右边,这时基准值的位置已经排好 (因为小于 阅读全文
摘要:
前言 学习堆排序前,我们需要先对堆有一定的认识和了解,如果你还不了解堆的话,可以先看看我的另外一篇博客《堆的引入与实现》 算法思路 我们先使用堆的上浮使得数组中的数构成大根堆,再使用堆的下沉,就可以得到当前堆中的最大值,并放到下标为 heapSize 的位置,并把 heapSize - 1 , 继续 阅读全文
摘要:
本篇文章介绍了堆的定义以及堆的实现代码,堆是一个很重要的数据结构,并且了解了堆,我们才能更好地明白堆排序 阅读全文