排序-----堆排序2
//-------堆排序---------//void HeapAdjust(int *a, int i, int Length){int Child;int Temp;for (Temp = a; 2 * i + 1 < Length; i = Child){Child = 2 * i + 1;if (Child < Length - 1 && a > a){++Child;}if (Temp < a){a = a;}else{break;}a = 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;a = a;a = 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); } HeapSort(a,length); for(i = 0; i < length; i++) { printf("%d ",a);} printf("\n"); return 1;}
页:
[1]