|
20鱼币
void bogo_sort(int array[], int length)
{
int i, j, judge = 1, t = 0;
int random_number_set[length], mid_set[length];
while(judge == 1)
{
t++;
printf("第%d次循环\n", t);
srand(time(0));
for(i = 0; i < length;)
{
printf("进入循环 1\n");
random_number_set[i] = rand()%length;
for(j = 0; j < i; j++)
{
if(random_number_set[i] == random_number_set[j])
{
i--;
break;
}
}
}
for(i = 0; i < length; i++)
{
printf("进入循环 2\n");
mid_set[i] = array[random_number_set[i]];
}
for(i = 0; i < 10; i++)
{
printf("进入循环 3\n");
array[i] = mid_set[i];
}
for(i = 0; i < length - 1; i++)
{
printf("进入循环 4\n");
if(array[i] > array[i + 1])
{
break;
}
if(i == length - 2)
{
judge = 0;
}
}
}
}
问题描述:为什么这个函数里的循环一成死循环了?
在这个函数中,循环一成死循环的原因是因为变量judge的值一直为1,没有被修改为0,导致while循环一直执行。在代码中,只有当数组array中的元素已经排好序时,judge的值才会被修改为0,结束循环。但是在循环中,没有对数组array进行排序的代码,因此judge的值永远不会被修改,导致死循环。
解决这个问题的方法是,在while循环中加入对数组array的排序代码,使得judge的值可以被修改为0,从而结束循环。可以使用常见的排序算法如冒泡排序、快速排序等来对数组进行排序。
|
最佳答案
查看完整内容
在这个函数中,循环一成死循环的原因是因为变量judge的值一直为1,没有被修改为0,导致while循环一直执行。在代码中,只有当数组array中的元素已经排好序时,judge的值才会被修改为0,结束循环。但是在循环中,没有对数组array进行排序的代码,因此judge的值永远不会被修改,导致死循环。
解决这个问题的方法是,在while循环中加入对数组array的排序代码,使得judge的值可以被修改为0,从而结束循环。可以使用常见的排序算法如 ...
|