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