再写一遍堆排序
来源:互联网 发布:linux xchm打不开 编辑:程序博客网 时间:2024/05/16 06:03
void HeapAdjust (int* arr, int n, int s) { int i = s; for (i=2*s+1;i<n;i=i*2+1) { if (i+1<n && arr[i+1] > arr[i]) { i=i+1; } if (arr[i] < arr[s]) { break; } Swap(arr, s,i); s = i; } }void HeapSort(int* arr, int n) { int i; for (i = n/2 -1 ; i >= 0; i--) { HeapAdjust(arr,n,i); } Swap(arr,0,n-1); for (i=n-1;i>1;i--) { HeapAdjust(arr,i,0); Swap(arr,0,i-1); }}
0 0