排序
文章平均质量分 68
不见风月
这个作者很懒,什么都没留下…
展开
-
[230523 剑指51] 数组中的逆序对
整体思路是使用归并排序的算法。在归并排序的合并过程中,若右边子数组指针指向的元素小于左边子数组指针指向的元素,则意味着出现了逆序对,逆序对数量为左子数组中未合并的元素数量。在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。别的就不说了,就是觉得这个归并排序里面的 tmp 数组引用传参写得非常妙啊!重复使用,节约空间,good.易错点在合并过程中 if 分支需要先判断下标合法性以防止越界。重难点在递归实现归并排序。原创 2023-05-24 05:00:00 · 37 阅读 · 0 评论 -
[230523] 堆排序
heapify(递归过程)的目的是使原 array 中每一个非叶子节点都下沉至满足大顶堆/小顶堆限制条件的最底层(说大白话就是,如果在一次 heapify 中破坏了大顶堆/小顶堆的性质,则要继续调用 heapify 维护大顶堆/小顶堆的性质)(注意:由于在第一轮 heapify 中我们已经构造好了一个大顶堆,所以在 swap 以后只有堆顶元素是非法的,所以在 heapSort 中只需要对堆顶元素进行 heapify)第十轮 heapify 结束后,补充:利用小顶堆构造降序序列。原创 2023-05-24 03:00:00 · 46 阅读 · 0 评论