堆排序

来源:互联网 发布:淘宝客怎么推广如意投 编辑:程序博客网 时间:2024/06/14 06:29
#include <bits/stdc++.h>using namespace std;void adjustHeap(int a[],int h,int n){    int temp=a[h];    int i=2*h+1;    while(i<n)    {        if(i+1<n&&a[i]<a[i+1])i++;        if(temp<a[i])        {            a[h]=a[i];            h=i;            i=2*h+1;        }        else break;    }    a[h]=temp;}void sortHeap(int a[],int n){    for(int i=n/2-1;i>=0;i--)    {        adjustHeap(a,i,n);    }    for(int i=n-1;i>0;i--)    {        int t=a[0];        a[0]=a[i];        a[i]=t;        adjustHeap(a,0,i);    }}int main(){    int a[5]={2,3,1,4,0};    sortHeap(a,5);    for(int i=0;i<5;i++)        cout<<a[i]<<endl;    return 0;}

原创粉丝点击