#include <iostream> #include <algorithm> #include <cstring> #include <cmath> #define maxn 110 using namespace std; int a[maxn]; void BubbleSort(int *arr,int len)//冒泡排序 { for(int i=0;i<len;i++) { for(int j = 0; j<len-i-1;j++) { if(a[j]>a[j+1])swap(a[j],a[j+1]); } } } void SelectSort(int *arr,int len)//选择排序 { for(int i=0;i<len;i++) { int minn = arr[i]; for(int j=i+1;j<len;j++) { if(minn > arr[j]) { minn = arr[j]; swap(arr[i],arr[j]); } } } } int Huafen(int* arr,int l,int r)//快排 { int pri = arr[l]; while(l<r) { while(l<r && pri <= arr[r])r--; arr[l] = arr[r]; while(l<r && pri >= arr[l])l++; arr[r] = arr[l]; } arr[l] = pri; return l; } void Qsort(int *arr,int l,int r) { int mid; if(l < r) { mid = Huafen(arr, l, r); Qsort(arr, l, mid -1); Qsort(arr, mid + 1, r); } } void heapAdjust(int *arr,int root ,int len)//从小到大排序使用大根堆 { int tmp = arr[root]; for(int i=(root + 1)*2 -1;i<len;i = (i+1)*2-1) { if(i <len-1 && arr[i]<arr[i+1])//找出大的 { i++; } if(tmp >= arr[i])break; else{ arr[root] = arr[i]; root = i; } } arr[root] = tmp; } void buildHeap(int *arr,int len) { for(int i=(len/2)-1;i>=0;i--) { heapAdjust(arr,i,len); } } void HeapSort(int *arr,int len){ int tmp; buildHeap(arr,len); for(int i=len-1;i>0;i--) { swap(arr[0],arr[i]); heapAdjust(arr,0,i); } } int main() { int n; while(cin>>n) { for(int i=0;i<n;i++)cin>>a[i]; // Qsort(a,0,n-1); // BubbleSort(a,n); // SelectSort(a,n); HeapSort(a,n); for(int i=0;i<n;i++) { cout<<a[i]<<" "; }cout<<endl; } } // 64 位输出请用 printf("%lld")