数据结构算法模板之快速排序
时间复杂度 O(nlog(n))
using namespace std;typedef long long ll;const int maxn=10010;const int INF=0x3f3f3f3f;int num[maxn];//快速排序//l 左边界,r 右边界//朴素写法void quicksort(int l,int r){if(l>=r)return;int i=l,j=r,flag=num[l];while(i<j){while(i<j&&num[i]<flag)i++;while(i<j&&num[j]>flag)j--;swap(num[i],num[j]);}quicksort(l,i-1);quicksort(i+1,r);}//优化void quicksort(int l,int r){int i=l,j=r,flag=num[(l+r)>>1];while(i<=j){while(num[i]<flag)i++;while(num[j]>flag)j--;if(i<=j){swap(num[i],num[j]);i++;j--;}}if(l<j)quicksort(l,j);if(i<r)quicksort(i,r);}//测试程序及样例int main(){int n;cin>>n;for(int i=0;i<n;i++)cin>>num[i];quicksort(0,n-1);for(int i=0;i<n;i++)cout<<num[i]<<" ";cout<<endl;}/*104 6 2 1 0 3 8 5 9 7*/
