快速排序

来源:互联网 发布:poc软件对讲 编辑:程序博客网 时间:2024/06/05 08:31

看来好几个版本关于快速排序的描述,最终选择了《算法导论》里给出的一个算法,感觉这个特别容易理解和记忆。

原算法如下:

QUICKSORT(A,p,r)1 if p<r2  then q ←PARTITION(A,p,r)3 QUICKSORT(A,p,q-1)4 QUICKSORT(A,q+1,r) PARTITION(A,p,r)1 x ←A[r]2 i ←p-13 for j←p to r-14 do if A[i]<=x5 then i←i+16 exchange A[i]←→A[j];7 exchange A[i+1]←→A[r]8 return i+1


使用C++实现的代码实现如下所示:


#include <iostream>using namespace std;int partion(int a[],int p,int r){int i = p-1;int tem = a[r];int j = p;for(j;j<=r-1;j++){if(a[j]<=tem){i = i+1;int temp = a[i];a[i]=a[j];a[j]=temp;}}a[r]=a[i+1];a[i+1]= tem;return i+1;}void QuickSort(int a[],int p,int r){if (p<r){int q=partion(a,p,r);QuickSort(a,p,q-1);QuickSort(a,q+1,r);}}int main(){int array[]={4,5,7,2,1,9,3,6};QuickSort(array,0,7);cout<<"start"<<endl;for(int i=0;i<=7;i++)cout<<array[i]<<" ";cout<<endl;return 0;} 


原创粉丝点击