编辑代码

#include <iostream>
#include <algorithm>
using namespace std;

void maxHeapify(int arr[],int start,int end){
    int dad=start;
    int son=dad*2+1;
    while(son<=end){
        if(son+1<=end&&arr[son]<arr[son+1]){
            son++;
        }
        if(arr[dad]>arr[son]){
            return;
        }
        else{
            swap<int>(arr[dad],arr[son]);
            dad=son;
            son=dad*2+1;
        }
    }
}
void heapSort(int arr[],int len){
    for(int i=len/2-1;i>=0;i--){
        maxHeapify(arr,i,len-1);
    }
    for(int i=len-1;i>0;i--){
        swap(arr[0],arr[i]);
        maxHeapify(arr,0,i-1);
    }
}
int main(){
    int arr[]={9,6,8,2,5,7};
    int len=int(sizeof(arr)/sizeof(*arr));
    heapSort(arr,len);
    cout << "排序后:" << endl;
    for(auto item:arr){
        cout << item << " ";
    }
    return 0 ;
}