#include <cstdlib>#include <cstdio>#include <cstring>#include <iostream>#include <time.h>using namespace std;const int HEAPSIZE = 10;int heap[HEAPSIZE + 1];int MAKEHEAP(int i ,int size){ int child,rootkey,tmp; tmp = heap[i]; rootkey = heap[i]; child = 2 * i; while ( child <= size) { if ( (child < size ) && heap[child] > heap[child+1] ) child++; if( tmp < heap[child] ) //這裡我傻了吧唧的打成了heap[i] < heap[child]了,結果WAWAWA break; else{ heap[child/2] = heap[child]; child = child*2; } } heap[child/2] = tmp;}int main(){ srand(time(NULL)); for(int i = 1 ; i <= HEAPSIZE; i++) { heap[i] = rand() % 100; } printf("Before Sorting: \n"); for(int i = 1 ; i <= HEAPSIZE; i++) { printf("%d ",heap[i]); if(i % 5 == 0 ) printf("\n"); } for(int i = (HEAPSIZE ) / 2; i > 0 ; i--) { MAKEHEAP(i,HEAPSIZE); } int tmp = 0; printf("After sorting:\n"); for (int i = HEAPSIZE - 1 ; i > 0; i--) { tmp = heap[1]; heap[1] = heap[ i + 1]; printf("%d ",tmp); if( i % 5 == 0 ) printf("\n"); MAKEHEAP(1,i); } printf("%d ",heap[1]); return 0;}