数据结构算法模板之快速排序

Posted sinker

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构算法模板之快速排序相关的知识,希望对你有一定的参考价值。

时间复杂度 O(nlog(n))

#include<bits/stdc++.h>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*/


以上是关于数据结构算法模板之快速排序的主要内容,如果未能解决你的问题,请参考以下文章

算法排序之堆排序

重学数据结构和算法之归并排序快速排序

基础算法系列之排序算法[快速排序,归并排序,二分查找]

Java排序算法之快速排序

高级排序算法之双路快速排序

排序算法之快速排序