【问题标题】:How to put in order random numbers如何排列随机数
【发布时间】:2017-11-30 19:20:28
【问题描述】:

我想找到一种方法来将随机数按顺序放入数组中。 我遇到的问题是如何知道我的号码是否有序,以便退出循环。

我只能使用循环、数组和条件。

while (!checker) {
  if (C[B_index] > C[B_index+1] && B_index < sizeB) {
    checker = C[B_index+1];
    C[B_index+1] = C[B_index];
    C[B_index] = checker;
    B_index++;
  }
  else if (B_index == sizeB)
    B_index = 0;
  else if (C[B_index] <= C[B_index+1])
    B_index++
}

【问题讨论】:

  • 你的代码有点难读,主要是因为没有空格。
  • C[B_index]&gt;C[B_index+1] 必须始终为假,不是吗?
  • 提示:对数据进行排序。完成排序后,您知道您的数据是有序的,因此您可以退出。请参阅上面的冒泡排序链接。您的代码现在看起来像是冒泡排序的失败尝试。
  • for(int i=1;i&lt;SizeB;i++) if(C[i-1] &gt; C[i]) {/*data is not in ascending order*/}

标签: c arrays loops


【解决方案1】:

如果您可以在循环中使用循环,则可以使用它。 基于冒泡排序。 这样,程序在数组上循环一次以找到最大或最小的数字(同一算法的几种变体),下一次搜索会缩短一个,因此在循环本身中设置了中断条件。不需要另一个“if(...)”。

for(i=0; i<size; i++)
    {
        for(j=i+1; j<size; j++)
        {
            if(array[i] > array[j])
            {
                temp     = array[i];
                array[i] = array[j];
                array[j] = temp;
            }
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    • 2012-09-09
    相关资源
    最近更新 更多