快速排序

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 }

 

posted @ 2016-12-28 11:04  fengsz  阅读(136)  评论(0编辑  收藏  举报