0
点赞
收藏
分享

微信扫一扫

王道考研 堆排序 可执行代码(C++实现)

#include <iostream>
using namespace std;
//调整堆
void HeadAdjust(int A[],int k, int len){
    A[0]=A[k];
    for (int i=2*k;i<=len;i*=2){
        if(i<len&&A[i]<A[i+1]){
            i++;
        }
        if(A[0]>=A[i]) break;
        else{
            A[k]=A[i];
            k=i;
        }

    }
    A[k]=A[0];
}
//建立堆
void CreateHeap(int A[],int len){                                         
    for (int i=len/2;i>0;i--){
        HeadAdjust(A,i,len);
    }
}
//堆排序
void HeapSort(int A[],int len){
    CreateHeap(A,len);
    
    for (int i=len;i>0;i--){
        cout<<A[1]<<" ";
        swap(A[i],A[1]);
        
        HeadAdjust(A,1,i-1);
    }

}
int main(){
    int x;
    int A[]={x,99,8,9,6,2,7};//x相当于一个哨兵
    HeapSort(A,6);
    return 0;
}

王道考研 堆排序 可执行代码(C++实现)_堆排序

赶快去试一下吧,如有疑问请留言。

举报

相关推荐

0 条评论