|
|
|
//-------堆排序---------//void HeapAdjust(int *a, int i, int Length){int Child;int Temp;for (Temp = a[i]; 2 * i + 1 < Length; i = Child){Child = 2 * i + 1;if (Child < Length - 1 && a[Child + 1] > a[Child]){++Child;}if (Temp < a[Child]){a[i] = a[Child];}else{break;}a[Child] = Temp;}}void HeapSort(int *a, int length){int i;int temp;for (i = length / 2 - 1; i >= 0; --i){HeapAdjust(a, i, length);}for (i = length - 1; i > 0; --i){temp = a[0];a[0] = a[i];a[i] = temp;HeapAdjust(a, 0, i);} }int main() { int *a; int i, length; int temp = 0; printf("input :"); scanf("%d",&length); a = (int*) malloc((length+1) * sizeof(int)); printf("input %d Numble :", length); for(i = 0; i < length; i++) { scanf(" %d", &a[i]); } HeapSort(a,length); for(i = 0; i < length; i++) { printf("%d ",a[i]); } printf("\n"); return 1;} |
|