![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序
markrenton94
我为什么要写?
展开
-
堆排序基本思路
前提:1、不创建新的空间,只在当前带排序数组arr中做处理;2、升序,大顶堆。思路:1、首先建立大顶堆。建立大顶堆的过程(heapInsert)是自下而上不断调整新加入元素的位置;2、交换首次建立好大顶堆的首尾元素(最大元素沉底,这也是为什么利用大顶堆做升序),同时用于重建大顶堆的arr尺寸减1(因为最后一个元素已经最大,不参加构建大顶堆);3、由于将末尾的元素调整了位置,所以此时不符...原创 2019-02-25 22:10:31 · 443 阅读 · 0 评论 -
基于荷兰国旗优化的快排
思路:快排核心思想是递归的调用partition。具体来说,partition就是在待排数组arr选取一个数p作为比较的基准,小于等于的数放在左边,大于的数放在右边。然后继续对左右两部分继续分别调用partition过程。这是传统快排思想,其一般选取arr中最后一个元素作为比较的基准,递归调用的过程亦复如此。为什么需要用荷兰国旗问题去优化快排过程呢?首先介绍荷兰国旗问题:与上述partiti...原创 2019-02-26 22:53:39 · 267 阅读 · 0 评论