堆排序
Posted 哇小明
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了堆排序相关的知识,希望对你有一定的参考价值。
int maxHeap(int *a,int start,int end)
int node = start;
int left = 2*node+1;
int tmp = a[node];
for(;left<end;node = left,left=2*node+1)
if(a[left] < a[left+1] && left<=end)
left ++;
if(tmp > a[left])
break;
else
a[node]=a[left];
a[left]=tmp;
return 0;
int HeapSort(int *a,int size)
for(auto i=size/2-1;i>=0;i--)
maxHeap(a,i,size-1);
for(auto i=size-1;i>=0;i--)
int tmp = a[0];
a[0] = a[i];
a[i] = tmp;
maxHeap(a,0,i-1);
return 0;
int main()
int a[] = 20,30,90,40,70,110,60,10,100,50,80;
int ilen = (sizeof(a)) / (sizeof(a[0]));
//heapSortAsc(a, ilen);
HeapSort(a,ilen);
for (auto i=0; i<ilen; i++)
cout << a[i] << " ";
return 0;
以上是关于堆排序的主要内容,如果未能解决你的问题,请参考以下文章