#include "iostream.h" using namespace std; //因為i從0開始 #define LeftChild(i) (2*(i)+1) //i-N范圍內,創建最大堆 void maxHeap(int A[], int i, int N){ int tmp; int child; for(tmp=A[i];LeftChild(i)A[child]){ child++; } if(tmp=0;i--){ maxHeap(A,i,N); } for(int i=N-1;i>0;i--){ //A[0]是最大堆的最大值,通過交換,把堆的最大值置於隊尾 swap(A[0],A[i]); //重建最大堆 maxHeap(A,0,i); } } int main(int argc, char *argv[]) { int N; cin>>N; int A[100]; for(int i=0;i >A[i]; } HeapSort(A,N); for(int i=0;i