注:数组是从arr[1]开始排序
#includeusing namespace std; //大根堆 void HeapAdjust(int arr[],int s,int m){ int rc = arr[s]; for(int j=2*s;j<=m;j*=2){ if(j =arr[j]) break; int temp = arr[s]; arr[s] = arr[j]; arr[j] = temp; s = j; } arr[s] = rc; } void CreatHeap(int arr[],int n){ for (int i=n/2;i>0;--i){ HeapAdjust(arr,i,n); } } void HeapSort(int arr[],int n){ CreatHeap(arr,n); for (int i=n;i>1;--i){ arr[0] = arr[1]; arr[1] = arr[i]; arr[i] = arr[0]; HeapAdjust(arr,1,i-1); } } void printarray(int arr[],int n) { for(int i=1;i<=n;i++) cout< >n; int arr[n+1]; for(int i=1;i<=n;i++){ cin>>arr[i]; } cout<<"oarray:"; printarray(arr,n); HeapSort(arr,n); cout <<"sarray:"; printarray(arr,n); return 0; }



