C语言排序之堆排序

#include void swap(int *array,int a,int b) { int temp = array[a]; array[a] = array[b]; array[b] = temp; } void AdjustHeap(int *array,int s,int m) { int temp; int j ; temp = array[s]; for(j = 2*s; j <= m; j *=2) { if(j < m && array[j] < array[j+1]) { ++j; } if(temp >= array[j]) { break; } array[s] = array[j]; s = j; } array[s] = temp; } void HeapSort(int *array,int length) { int i,j; for(i = length/2; i > 0; i--) { AdjustHeap(array,i,length); } for(j = length-1; j > 0; j--) { swap(array,0,j); AdjustHeap(array,0,j-1); } } int main(void) { int k = 0; int Array[5] = {4,2,1,3,0}; HeapSort(Array,5); for(k = 0; k < 5; k++) { printf("%d ",Array[k]); } return 0; }

猜你喜欢

转载自www.cnblogs.com/HMM0530/p/11447762.html