好久没有看排序了,今天写了一会儿才写对,以后应该多练练算法题
#include<iostream>
using namespace std;
int a[100000];
//快速排序
int Partition(int a[],int low ,int high)
{
int temp1;//枢纽置
temp1=a[low];
while(low<high)
{
while(low<high&&a[high]>=temp1)--high;//找第一个比枢纽置小的值
a[low]=a[high];
while(low<high&&a[low]<temp1)++low;//找第一个比枢纽置大的值
a[high]=a[low];
}
a[low]=temp1;
return low;//返回枢纽值的位置
}
void Qsort(int a[],int low ,int high)
{
int temp;
if(low<high)
{
temp=Partition(a,low,high);
Qsort(a,low,temp-1);
Qsort(a,temp+1,high);
}
}
int main()
{
int n;
int i;
int x;//输入的变量
cin>>n;
for( i=0;i<n;i++)
{
cin>>x;
a[i]=x;
}
Qsort(a,0,n-1);
for(i=0;i<n;i++)
cout<<a[i]<<" ";
return 0;
}