void MinheapSortToDescArray(int a[], int n){ for (int i = n - 1; i >= 1; i--) { Swap(a[i], a[0]); MinHeapFixdown(a, 0, i); } }
void MinheapsortTodescendarry(int *a, int n) { for (i = n - 1; i >= 1; i--) { Swap(a[i], a[0]); MinHeapFixdown(a, 0, 1); } }
int minHeap(int a[], unsigned int size) { int i = 0; for(i = (size -1)/2; i >= 0; i--) MinHeapFixdown(a, i, size); return 0; }
void MakeMinHeap(int *a, int n) { int i = 0; for (i = n / 2 - 1; i >= 0; i--) { MinHeapFixdown(a, i, n); } }
void MinHeapDeleteNumber(int *a, int n) { int tmp; a[0] = tmp; a[0] = a[n - 1]; a[n - 1] = tmp; MinHeapFixdown(a, 0, n - 1); }
int heapSort(int a[], unsigned int size) { int i =0; minHeap(a, size); printArray(a, size, "MinHeap: "); for(i = size -1; i > 0; i--) { swap(&a[i], &a[0]); MinHeapFixdown(a, 0, i-1); printArray(a, i, "heapSort "); } return 0; }
//建立最小堆 void MakeMinHeap(int a[], int n){ for (int i = n / 2 - 1; i >= 0; i--) MinHeapFixdown(a, i, n); }
//在最小堆中删除数 void MinHeapDeleteNumber(int a[], int n){ Swap(a[0], a[n - 1]); MinHeapFixdown(a, 0, n - 1); }