堆排序模版

来源:互联网 发布:剑网三琴萝捏脸数据 编辑:程序博客网 时间:2024/05/17 23:32
void HeapAdjust(int *a,int i,int size)  {      int lchild=2*i;      int rchild=2*i+1;      int max=i;      if(i<=size/2)      {          if(lchild<=size&&a[lchild]>a[max])          {              max=lchild;          }          if(rchild<=size&&a[rchild]>a[max])          {              max=rchild;          }          if(max!=i)          {              swap(a[i],a[max]);              HeapAdjust(a,max,size);          }      }  }    void BuildHeap(int *a,int size)  {      int i;      for(i=size/2; i>=1; i--)      {          HeapAdjust(a,i,size);      }  }    void HeapSort(int *a,int size)  {      int i;      BuildHeap(a,size);      for(i=size; i>=1; i--)      {          swap(a[1],a[i]);          HeapAdjust(a,1,i-1);      }  }  

0 0
原创粉丝点击