SWUST数据结构--堆排序算法

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

int n;
void dui(int i,int a[])  
{  
    int j=i*2;  
    int item=a[i];  
    while(j<=n)  
    {  
        if(j<n && a[j]>a[j+1])  
        {  
            j++;  
        }  
        if(item>a[j])  
        {  
            a[i]=a[j];  
            i=j;  
            j=i*2;  
        }  
        else break;  
    }  
    a[i]=item;  
}  
int main()  
{  
    int i,a[1005];  
    cin>>n;  
    for(i=1;i<=n;i++)  
        cin>>a[i];  
    for(i=n/2;i>=1;i--)  
        dui(i,a);  
    for(i=1;i<=n;i++)  
        cout<<a[i]<<" ";  
    return 0;  
}  

猜你喜欢

转载自blog.csdn.net/qq_41681743/article/details/80799677
今日推荐