快速排序(此方法为啊哈算法讲解的方法)
代码实现:
#include<stdio.h>
#include<string.h>
int s[1000005];
void quick(int left,int right)
{
if(left>right)
return ;
int temp=s[left];
int j=right;
int i=left;
int t;
while(i!=j)
{
while(s[j]>=temp&&i<j)
j--;
while(s[i]<=temp&&i<j)
i++;
if(i<j)
{
t=s[i];
s[i]=s[j];
s[j]=t;
}
}
s[left]=s[i];
s[i]=temp;
quick(left,i-1);
quick(i+1,right);
}
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&s[i]);
}
quick(0,n-1);
for(int i=0;i<n-1;i++)
printf("%d ",s[i]);
printf("%d",s[n-1]);
return 0;
}