鱼C论坛

 找回密码
 立即注册
查看: 1472|回复: 2

[已解决]麻烦大神看一下为什么循环一成死循环了?

[复制链接]
发表于 2023-9-14 10:22:06 | 显示全部楼层 |阅读模式
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;
            }
        }
    }   
}

问题描述:为什么这个函数里的循环一成死循环了?
最佳答案
2023-9-14 10:22:07
在这个函数中,循环一成死循环的原因是因为变量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,从而结束循环。可以使用常见的排序算法如 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-9-14 10:22:07 | 显示全部楼层    本楼为最佳答案   
在这个函数中,循环一成死循环的原因是因为变量judge的值一直为1,没有被修改为0,导致while循环一直执行。在代码中,只有当数组array中的元素已经排好序时,judge的值才会被修改为0,结束循环。但是在循环中,没有对数组array进行排序的代码,因此judge的值永远不会被修改,导致死循环。

解决这个问题的方法是,在while循环中加入对数组array的排序代码,使得judge的值可以被修改为0,从而结束循环。可以使用常见的排序算法如冒泡排序、快速排序等来对数组进行排序。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-9-14 11:08:42 | 显示全部楼层
for循环的条件设置有问题,没有在条件里设置i++导致i的值一直不变化,使得无法结束循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 13:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表