2016 - 2024

感恩一路有你

堆排序大根堆如何排序 在快速排序、堆排序、归并排序中,什么排序是稳定的?

浏览量:3157 时间:2021-03-10 16:00:07 作者:admin

在快速排序、堆排序、归并排序中,什么排序是稳定的?

  • 归并排序是稳定的“快速排序和堆排序都不稳定.不稳定:就是大小相同的两个数,经过排序后,最终位置与初始位置交换了。
  • 快速排序:27 23 27 3以第一个27作为pivot中心点,则27与后面那个3交换,形成3 23 27 27,排序经过一次结束,但最后那个27在排序之初先于初始位置3那个27,所以不稳定。
  • 堆排序:比如:3 27 36 27,如果堆顶3先输出,则,第三层的27(最后一个27)跑到堆顶,然后堆稳定,继续输出堆顶,是刚才那个27,这样说明后面的27先于第二个位置的27输出,不稳定。”“2 归并排序(MergeSort)
  • 归并排序先分解要排序的序列,从1分成2,2分成4,依次分解,当分解到只有1个一组的时候,就可以排序这些分组,然后依次合并回原来的序列中,这样就可以排序所有数据。合并排序比堆排序稍微快一点,但是需要比堆排序多一倍的内存空间,因为它需要一个额外的数组。”
  • 以Ai与Aj为例子快速排序有两个方向,左边的i下标一直往右走,当a[i] <= a[center_index],其中center_index枢元素的数组下标,一般取为数组第0个元素。而右边的j下标一直往左走,当a[j] > a[center_indexij都走不动了,i <= j, 交换a[i]和a[j],重复上面的过程,直到i>j。
  • 交换a[j]和a[center_index],完成一趟快速排序。在中枢元素和a[j]交换的时候,很有可能把前面的元素的稳定性打乱,比如序列5 3 3 4 3 8 9 10 11,现在中枢元素5和3(第5个元素,下标从1开始计)交换就会把元素3的稳定性打乱,所以快速排序是一个不稳定的排序算法,不稳定发生在中枢元素和a[j]交换的时刻。

堆排序要求从大到大排序,我是要建大顶堆?还是小顶堆?

建大顶,小顶都可以,假如建大顶堆,每次选出来的都是最大的,如果要求从小到大排,就把选来的元素放到最后就好了,如果要求从大到小排,就放到最前。不过习惯上,还是大顶堆,从大到小排,小顶堆,从小到大排。

升序排序要建立大根堆还是小根堆?

用大根堆,大根堆用于升序排序(所以求最小的前k个数用大根堆

堆排序大根堆如何排序 堆排序怎么建立初始堆 堆排序最大堆和最小堆

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。