数组折半法问题,,我找不到这个代码中的问题 能帮忙看看么
#include<stdio.h>//声明函数
void CelerityRun(int left, int right, int array[]);
int main()
{
int i;
int a[10];
printf("为数组的赋值:\n");
//从键盘中为数组赋值
for (i = 0; i < 10; i++)
{
printf("a[%d]=", i);
scanf_s("%d", &a[i]);
}
//从小到大排序
CelerityRun(0, 9, a);
//输出数组
for (i = 0; i < 10; i++)
{
printf("%d\t", a[i]);
if (i == 4)
{
printf("\n");
}
}
getchar();
getchar();
return 0;
}
void CelerityRun(int left, int right, int array[])
{
int i;
int j;
int m, t;
i = left;
j = right; //求中间值
m = array[(left + right) / 2];
do
{
while ((array[i] < m) && (i < right)); //从左找小于中值的数
i++;
while ((array[j]>m) && (j>left)) //从右找大于中值的数
j--;
if (i <= j) //找到了一对值
{
t = array[i];
array[i] = array[j];
array[j] = t;
i++;
j--;
}
} while (i <= j); //如果两边 的下标交错,就停止 完成一次
//递归左半边
if (left < j)
{
CelerityRun(left, j, array);
}
//递归右半边
if (right>i)
{
CelerityRun(i, right, array);
}
}
[此贴子已经被作者于2017-10-31 10:48编辑过]