如果新堆的堆顶元素不能满足堆的性质,就需要把当前无序区(A1,A2,。。。。。。An-1)重新调整,转换成新堆,然后再把堆顶元素与无序区倒数第一个元素替换,得到新的无序区{A1,A2。。。。A(n-2)}和新的有序区{A(n-1),An}。循环上述步骤直到初始序列完全变为有序序列。来*自-优=尔,论:文+网www.youerw.com
(3) 操作进程如下:
初始化堆:将A[1。。。。。。n]构造为堆;
把堆顶元素A[1]与最后一个元素A[n]替换,把剩下的无序区(A1,A2,。。。。。。An。1)调整成新的堆。
所以执行堆排序的最主要的两个步骤一个是构建初始堆,一个是调整新堆。
下面举例说明:
给出初始序列a[]={16,7,3,20,17,8},用堆选择排序法从小到大排序。
C语言中选择法排序的应用实现(3):http://www.youerw.com/jisuanji/lunwen_82474.html