堆排序

来源:互联网 发布:nao机器人编程 编辑:程序博客网 时间:2024/06/03 20:50
void HeapAdjust(int a[],int s,int t){    int rc = a[s];    int j;    for(j=2*s+1;j<=t;j=2*j+1)    {        if(j<t && a[j] < a[j+1]) j=j+1;        if(rc >= a[j]) break;        a[s] = a[j];        s = j;    }    a[s] = rc;}void HeapSort(int a[],int len){    //初始化大顶堆    int i,tmp;    for(i=len/2-1;i>=0;i--)    {        HeapAdjust(a,i,len-1);    }    //第一个元素和指定的最后一个元素交换位置,然后继续调整成大顶堆    for(i=len-1;i>0;i--)    {        tmp = a[i];        a[i] = a[0];        a[0] = tmp;        HeapAdjust(a,0,i-1);    }}

原创粉丝点击