#include<stdio.h>
void Quicksort(int *p,int left,int right)
{
int i,j,key;
if(left<right) //进行了一次选择判断,避免死循环问题
{
i=left;
j=right;
key=p[left];
while(i<j)
{
while(key<=p[j]&&i<j)j--;
if(i<j)p[i++]=p[j];
while(key>=p[i]&&i<j)i++;
if(i<j)p[j--]=p[i];
} //以上四句全部限制i<j,其目的是防止j在i的前面导致后面的死循环;实际上,这一个限制直接使得最后跳出循环的结果必然是i==j,者也是后面的i可以换成j
p[i]=key; //检验方式:printf("%d==%d\n",i,j);
Quicksort(p,left,i-1); //在判断之内,进行的递归套用
}
Quicksort(p,right,i+1);
}
void main()
{
int a[5];
int i;
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
Quicksort(a,0,4);
for(i=0;i<5;i++)
{
printf("%d\t",a[i]);
}
}
注:以上代码是自己参考google上的综合,选取学习的一种自己看来最简单点的方式