C语言实现堆排序的简单实例
本文通过一个C语言实现堆排序的简单实例,帮助大家抛开复杂的概念,更好的理解堆排序。
实例代码如下:
voidFindMaxInHeap(intarr[],constintsize){ for(intj=size-1;j>0;--j){ intparent=j/2; intchild=j; if(j<size-1&&arr[j]<arr[j+1]){ ++child; } if(arr[child]>arr[parent]){ inttmp=arr[child]; arr[child]=arr[parent]; arr[parent]=tmp; } } } voidHeapSort(intarr[],constintsize){ for(intj=size;j>0;--j){ FindMaxInHeap(arr,j); inttmp=arr[0]; arr[0]=arr[j-1]; arr[j-1]=tmp; } } intmain() { intarr[]={2,5,3,12,6,21,8,1}; intn=sizeof(arr)/sizeof(arr[0]); HeapSort(arr,n); for(intj=0;j<n;++j){ printf("%3d",arr[j]); } printf("\n"); return0; }