1.以下代码是在书上看到的,加上自己的理解。
#include<stdio.h>
int a[101];
void quictsort(int left,int right)
{
int i,j,t,temp;
if(left>=right)//极为重要,判断退出函数的主要条件
return;
i=left; j=right;
temp=a[left];//确定最左边一个数为标准数,
while(i!=j)//两个数不相等才能进行比较,若相等既说明已经两边数已经比完退出循环,将标准数归位
{
while(a[j]>=temp&&i<j)
j--;
while(a[i]<=temp&&i<j)
i++;
if(i<=j)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
a[left]=a[i];//标准数归位
a[i]=temp;
quictsort(left,i-1);//对半分,将作半部分排序
quictsort(i+1,right);}int main(void)
{ int n,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
} quictsort(1,n); for(i=1;i<=n;i++)
{
printf("%d\t",a[i]);
}
}
快排多敲个几遍就可以理解了