快速排序算法

来源:互联网 发布:我的淘宝网登陆 编辑:程序博客网 时间:2024/04/23 15:46
//快速排序就是:以第一个元素为标准,在右边找出比这个标准元素小得元素,然后停止,再在从左边的元素找出一个比标准元素的大的元素,然后若果i<j,交换//否则返回j#include<iostream.h>int a[10000];int Partition(int start,int end);void QuickSort(int start,int end);int main(){int n;cin>>n;for(int i=1;i<=n;i++)cin>>a[i];QuickSort(1,n);for(int j=1;j<=n;j++)cout<<a[j]<<" ";cout<<endl;return 0;}int Partition(int start,int end){int x=a[start];int i=start-1;int j=end+1;while(true){   do   {j=j-1;   }while(a[j]>x);//必须不严格大于   do   {   i=i+1;   }while(a[i]<x);//必须不严格小于   if(i<j)   {   int temp=a[i];   a[i]=a[j];   a[j]=temp;   }   else   return j;}return -1;}void QuickSort(int start,int end){if(start<end){int q=Partition(start,end);QuickSort(start,q-1);QuickSort(q+1,end);}}