silver-crow 发表于 2023-9-14 10:22:06

麻烦大神看一下为什么循环一成死循环了?

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;
            }
      }
    }   
}

问题描述:为什么这个函数里的循环一成死循环了?

isdkz 发表于 2023-9-14 10:22:07

在这个函数中,循环一成死循环的原因是因为变量judge的值一直为1,没有被修改为0,导致while循环一直执行。在代码中,只有当数组array中的元素已经排好序时,judge的值才会被修改为0,结束循环。但是在循环中,没有对数组array进行排序的代码,因此judge的值永远不会被修改,导致死循环。

解决这个问题的方法是,在while循环中加入对数组array的排序代码,使得judge的值可以被修改为0,从而结束循环。可以使用常见的排序算法如冒泡排序、快速排序等来对数组进行排序。

silver-crow 发表于 2023-9-14 11:08:42

for循环的条件设置有问题,没有在条件里设置i++导致i的值一直不变化,使得无法结束循环
页: [1]
查看完整版本: 麻烦大神看一下为什么循环一成死循环了?