fafu1267 - 堆排序

来源:互联网 发布:java list 泛型 编辑:程序博客网 时间:2024/06/06 15:52

点击打开链接


#include <stdio.h>int da[30010];int n;void abc_heap(int s,int e){    int k = da[s];    int fa = s;    int ch = fa* 2;    while(ch <= e)    {        if(ch < e && da[ch] < da[ch + 1]) ch++;        if(da[ch] > k)        {            da[fa] = da[ch];            fa = ch;            ch = fa * 2;        }        else            break;    }    da[fa] = k;}void change(int &a,int &b){    int t = a;    a = b;    b = t;}void sort_heap(){    for(int i = n / 2; i >= 1; i--) abc_heap(i,n);//    for(int i = n; i > 1; i--)//    {//        change(da[1],da[i]);//        abc_heap(1,i - 1);//    }    change(da[1],da[n]);    abc_heap(1,n-1);    change(da[1],da[n - 1]);}void putdata(){    for(int i = 1; i <= n; i++ )    {        printf("%d%c",da[i],i%10==0?'\n':' ');    }}int main(){    //freopen("heapSort.in","r",stdin);    //freopen("heapSort.out","w",stdout);    scanf ("%d",&n);    for(int i = 1; i <= n; i++)    {        scanf ("%d",&da[i]);    }    sort_heap();    putdata();    return 0;}


原创粉丝点击