快速排序
Quick Sort
快速排序是目前最快的排序方法,他就是利用了分治的思想和分割(上一篇文章有讲)来完成排序。将序列进行分割,然后在将分割的前半段再分割,后半段也分割,知道前半段分割到不能再分,后半段也分到不能再分,就可以了。
代码如下:
1 #include <iostream> 2 #include <cstdio> 3 using namespace std; 4 5 const int maxn = 1000 + 5; 6 7 int a[maxn]; 8 9 int partition(int l,int r){ 10 int x = a[r]; 11 int i = l-1; 12 for(int j = l;j < r; j++){ 13 if(a[j] <= x){ 14 i++; 15 swap(a[j],a[i]); 16 } 17 } 18 swap(a[i+1],a[r]); 19 return i+1; 20 } 21 22 void quick_sort(int l,int r){ 23 if(l >= r)return; 24 int p = partition(l,r); 25 quick_sort(l,p-1); 26 quick_sort(p+1,r); 27 } 28 29 int main(){ 30 int n; 31 scanf("%d",&n); 32 for(int i = 1;i <= n; i++){ 33 scanf("%d",&a[i]); 34 } 35 quick_sort(1,n); 36 37 for(int i = 1;i <= n; i++){ 38 printf("%d ",a[i]); 39 } 40 }