虽然快速算法普遍被接受和认可,但具体的算法,各种书籍、资料稍微有一些出入,或导致实际操作的步骤数等有些许差别.
这里,我用如下的代码:(C语言版)
#include
int a[100];
void prt(int n)
{
int i;
for(i=1;i<=n;i++)
printf("%d ",a[i]);
}
void quicksort(int a[],int l,int h)
{
if (l>=h)return ;
int j ,i,key;
i=l;j=h;key=a[i];
while(i
{
while(i
key)j--;
if (i
while (i
if (i
}
a[i]=key;
if (l
quicksort(a,l,i-1);
if (i+1
quicksort(a,i+1,h);
}
int main()
{
int i,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
quicksort(a,1,n);
prt(n);
scanf("%d",&a[i]);
return 0;
}
我也仅仅举第一趟的结果为例,余下的相信你可以在启发之下完成,毕竟只是重要的是去掌握,而不是别人全部教~
第一趟步骤如下:
所以,第一趟的结果应该是:48,33, 26, 12, 52, 85, 69, 56, 70