标签:style blog io ar color sp for on 数据
#include <stdio.h> #define LeftChild(i) ( 2 * ( i )) void PercDown( int A[] , int i , int N) { int Child; int Tmp ; for (Tmp = A[i]; LeftChild(i) <= N; i = Child) { // 注意这里我只写了 < N , 导致结果为2,1,3,4,,,,即最后两个数据 // 并没有保持堆华,找了很久才找到 Child = LeftChild(i); if(Child != N && A[Child + 1] > A[Child]) Child ++; if (Tmp < A[Child]) A[i] = A[Child]; else break; } A[i] = Tmp ; } void heapSort(int A[] , int N) { int i ; int Tmp ; for (i = N / 2 ; i > 0 ; i--) //Bulid Heap 很简单的思想 PercDown(A, i, N); for (i = N ; i > 0 ; i--) { Tmp = A[N]; A[N] = A[1]; A[1] = Tmp; PercDown(A, 1, --N); } } int main(int argc, const char * argv[]) { int A[16] = {-10,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; heapSort(A, 15); for (int i = 0 ; i < 16 ; i ++) { printf("%d ",A[i]); } return 0; }
标签:style blog io ar color sp for on 数据
原文地址:http://www.cnblogs.com/Big-Ding/p/4151210.html