#include<stdio.h>
void celerityrun(int left,int right,int array[]);
void xun(int c[]);
int main()
{
int i;
int a[5]={9,6,15,4,2};
celerityrun(0,4,a);
printf("输出排序后的数组:\n");
for(i=0;i<5;i++)
{
printf("%d\t",a[i]);
}
printf("\n");
return 0;
}
void celerityrun(int left,int right,int array[])
{
int i,j;
int middle,itemp;
i=left;
j=right;
middle=array[(left+right)/2];
do
{
while((array[i]<middle)&&(i<right))
{
i++;
printf("输出while调节后i=%d,顺序为\n",i);
}
while((array[j]>middle)&&(j>left))
{
j--;
printf("输出while调节后j=%d,顺序为\n",j);
}
if(i<=j)
{
itemp=array[i];
array[i]=array[j];
array[j]=itemp;
xun(array);
i++;
printf("输出if调节后i=%d,顺序为\n",i);
j--;
printf("输出if调节后j=%d,顺序为\n",j);
}
}while(i<=j);
if(left<j)
{
celerityrun(left,j,array);
xun(array);
}
if(right<i)
{
celerityrun(i,right,array);
xun(array);
}
}
void xun(int d[])
{
int c;
int k[5];
for(c=0;c<5;c++)
printf("%d\t",k[c]);
}
,这个排序怎么把它每一步排序写书来,是不是需要用指数做函数的参数再写一遍?怎么改,想让折半法排序步骤跟清晰点,有助于理解,这个在第一部 的do{ }while,都能理解,在递归调用自己本身的函数时候,I=多少,J=多少,有点混乱,然后想把每一步移动的步骤编写出来,如果用指数,求老师帮忙改下,谢谢