//快速排序就是:以第一个元素为标准,在右边找出比这个标准元素小得元素,然后停止,再在从左边的元素找出一个比标准元素的大的元素,然后若果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);
}
}
快速排序算法
最新推荐文章于 2024-09-12 19:02:20 发布