首页 > 代码库 > 快速排序

快速排序

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 }

 

快速排序