#include<bits/stdc++.h> using namespace std; bool check(int a,int b) { return a<b; } void select_sort(int *a,int n)//选择 { for(int i=1;i<=n;i++) { int min1=a[i],min2=i; for(int j=i+1;j<=n;j++) { if(check(a[j],min1)){ min1=a[j]; min2=j; } } swap(a[i],a[min2]); } } void bubble_sort(int *a,int n)//冒泡 { for(int i=1;i<n;i++) { for(int j=1;j<=n-i;j++) { if(check(a[j+1],a[j])){ swap(a[j],a[j+1]); } } } } void insert_sort(int *a,int n)//插入 { for(int i=2;i<=n;i++) { for(int j=i;j>1;j--) { if(check(a[j],a[j-1])) { swap(a[j-1],a[j]); } else break; } } } void merge_sort(int *a,int l,int r)//归并 { if(l>=r)return; int mid=l+r>>1; merge_sort(a,l,mid); merge_sort(a,mid+1,r); int b[r-l+1],i,j,k=0; for(i=l,j=mid+1;i<=mid&&j<=r;) { !check(a[i],a[j]) ? b[++k]=a[j++] :b[++k]=a[i++]; } while(i<=mid)b[++k]=a[i++]; while(j<=r)b[++k]=a[j++]; for(int z=l,y=1;z<=r&&y<=k;z++,y++) a[z]=b[y]; } void quick_sort(int *a,int l,int r)//快速 { if(l>=r)return; int first=l,last=r,key=a[first]; while(first<last) { while(first<last&&!check(a[last],key))last--; a[first]=a[last]; while(first<last&&!check(key,a[first]))first++; a[last]=a[first]; } a[first]=key; quick_sort(a,l,first); quick_sort(a,first+1,r); } int a[100001]={0}; int main() { int n; cin>>n; for(int i=1;i<=n;i++) scanf("%d",&a[i]); // bubble_sort(a,n); // select_sort(a,n); // insert_sort(a,n); //O(n^2); // merge_sort(a,1,n); quick_sort(a,1,n); //O(nlogn); for(int i=1;i<=n;i++) printf("%d ",a[i]); return 0; }