SDUT3401数据结构实验之排序四:寻找大富翁

来源:互联网 发布:咏春拳网络公开课22 编辑:程序博客网 时间:2024/06/03 14:17
#include<bits/stdc++.h>using namespace std;void heapadjust(int a[],int i,int n){    int lc=i*2;    int rc=i*2+1;    int t=i;    if(i<=n/2)    {        if(lc<=n&&a[lc]>a[t])            t=lc;        if(rc<=n&&a[rc]>a[t])            t=rc;        if(t!=i)        {            swap(a[i],a[t]);            heapadjust(a,t,n);        }    }}void buildheap(int a[],int n){    for(int i=n/2; i>=1; i--)        heapadjust(a,i,n);}void heapsort(int a[],int n){    buildheap(a,n);    for(int i=n; i>=1; i--)    {        swap(a[1],a[i]);        heapadjust(a,1,i-1);    }}int main(){    int n,m;    while(~scanf("%d%d",&n,&m))    {        int a[12];        int k=1;        for(int i=0; i<n; i++)        {            int t;            scanf("%d",&t);            if(k<m+1)                a[k++]=t;            else            {                int l=1;                for(int j=2; j<k; j++)                    if(a[l]>a[j])                        l=j;                if(a[l]<t)                    a[l]=t;            }        }        heapsort(a,m);        for(int i=m; i>=1; i--)            if(i==m)                printf("%d",a[i]);            else                printf(" %d",a[i]);        printf("\n");    }}

0 0
原创粉丝点击