文章标题

来源:互联网 发布:乐清知临寄宿学校招生 编辑:程序博客网 时间:2024/06/08 13:11
#include<cstdio>using namespace std;int num[10000000],cnt_num=0;int swap1(int &a,int &b){    int c=a;    a=b;    b=c;    return 0;}int HeapAdj(int a[],int n,int m){    int s=n;    int maxi,c=n*2+1;    while (c<m)    {        maxi=(a[c]>=a[c+1])?c:c+1;        if (a[s]<a[maxi])        {            swap1(a[s],a[maxi]);        }else        {            break;        }        s=maxi;        c=maxi*2+1;    }}int HeapBuild(int a[10000000],int maxii){    for (int i=maxii/2;i>=0;i--)    {        HeapAdj(a,i,maxii);    }}int init(){    freopen("heap.in","r",stdin);    while (!feof(stdin))    {        scanf("%d",&num[cnt_num++]);    }    cnt_num--;    return 0;}int main(){    init();    HeapBuild(num,cnt_num);    for (int i=cnt_num;i>0;)    {        swap1(num[0],num[i]);        HeapAdj(num,0,--i);    }    for (int i=0;i<=cnt_num;i++)    {        printf("%d ",num[i]);    }    return 0;}

这种排序什么的真心弱爆……还是用来坑优先队列表……

0 0