C语言---快速排序

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]);	
}
}

快排多敲个几遍就可以理解了

猜你喜欢

转载自blog.csdn.net/printfxgd/article/details/79867816