算法导论系列文章之快速排序

来源:互联网 发布:去码软件下载 编辑:程序博客网 时间:2024/04/30 03:12

快速排序是一个应用非常广泛的排序算法.它的平均性能非常好.下面看一下具体的代码实现~


//快速排序算法.//2012.12.26#include <iostream>#include <ctime>using namespace std;typedef int ele;//快速排序的随机化版本,该版本是对足够大的输入排序的理想化选择 !void QuickSort(ele arrSort[],int left,int right);int Partition(ele arrSort[],int left,int right);int RandomPartition(ele arrSort[],int left,int right);void Swap(ele &a,ele &b);int main(){ele arr[]={2,4,1,5,3,6,9,7,0,8};int length=10;QuickSort(arr,0,length-1);for(auto i=0;i<length;i++)cout<<arr[i]<<" ";system("pause");return 0;}void QuickSort(ele arrSort[],int left,int right){if(left<right){int mid=RandomPartition(arrSort,left,right);QuickSort(arrSort,left,mid-1);QuickSort(arrSort,mid+1,right);}}int Partition(ele arrSort[],int left,int right){ele rval=arrSort[right];int i=left-1;for(int j=left;j<right;j++){if(arrSort[j]<=rval){i++;Swap(arrSort[i],arrSort[j]);}}Swap(arrSort[i+1],arrSort[right]);return i+1;}int RandomPartition(ele arrSort[],int left,int right){srand(time(0));int i=rand()%(right-left+1)+left;Swap(arrSort[i],arrSort[right]);return Partition(arrSort,left,right);}void Swap(ele &a,ele &b){ele c=a;a=b;b=c;}


0 0