编辑代码

#include <bits/stdc++.h>
using namespace std;

void SelectSort(int a[],int n)
{
    for(int i=0;i<n-1;i++){
        int min_pos=i;
        for(int j=i;j<n;j++){
            (a[j]<a[i]) ? min_pos= j : min_pos=min_pos;
        }
        swap(a[min_pos],a[i]);
    }
}

void show_elem(int a[],int n){
    for(int i=0;i<n;i++)
    cout<<a[i]<<' ';
    cout<<endl;
}

void heapc(int a[],int i,int n)
{
    int j=2*i,k=2*i+1;

    if (j<n and a[j]>a[i]){
        swap(a[j],a[i]); 
        heapc(a,j,n);
    }
    
    if (k<n and a[k]>a[i]){
        swap(a[k],a[i]);
        heapc(a,k,n);
    }
    return ;
}

void heapify(int a[],int n){
    for(int i=n/2;i>0;i--){
        heapc(a,i,n);
    }
}

void heapsort(int a[],int n)
{
    n--;
    while(n){
        swap(a[1],a[n]);
        heapc(a,1,n);
        n--;
    }
}

void heappush(int val,int a[],int *l){
    int n=(*l);
    a[++n]=val;
    int j=n,i=n/2;
    while(j!=1){
        if (a[i] < a[j]) {
            swap(a[i],a[j]);
            j=i,i=i/2;
        }
        else break;
    }
    *l=n;
}

int main()
{
    int a[20]={-65536,53,17,78,9,45,65,87,32};
    int n=9;

    // SelectSort(a,n);
    // show_elem(a,n);

    heapify(a,n);
    show_elem(a,n);

    // heapsort(a,n);
    // show_elem(a,n);

    heappush(63,a,&n);
    show_elem(a,n) ;

}