Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
气泡排序帮助在C。源代码中基于行的问题_C_Arrays_Prototype - Fatal编程技术网

气泡排序帮助在C。源代码中基于行的问题

气泡排序帮助在C。源代码中基于行的问题,c,arrays,prototype,C,Arrays,Prototype,我的问题是: 第28行:为什么num-i-1? 第30行:if条件意味着什么?特别是,为什么j+1 如何随机显示已排序数组的元素?没有Asc或Dsc订单 显示的随机数如何不同 因为我们要在索引中添加一个,所以不能循环到num-i,否则我们会过冲 这将在索引中添加一个元素,以查看并比较j:th和(j+1):th元素 那没有多大意义。如果要随机显示,请不要对其进行排序。“洗牌”是对数组进行随机化的术语 不知道你在说什么 1) num是要排序的数字数。i是已排序的元素数,1是将要排序的元素数。 在循环

我的问题是:

  • 第28行:为什么
    num-i-1?
  • 第30行:
    if
    条件意味着什么?特别是,为什么j+1
  • 如何随机显示已排序数组的元素?没有Asc或Dsc订单
  • 显示的随机数如何不同
  • 因为我们要在索引中添加一个,所以不能循环到
    num-i
    ,否则我们会过冲
  • 这将在索引中添加一个元素,以查看并比较
    j
    :th和(
    j+1
    ):th元素
  • 那没有多大意义。如果要随机显示,请不要对其进行排序。“洗牌”是对数组进行随机化的术语
  • 不知道你在说什么
  • 1) num是要排序的数字数。i是已排序的元素数,1是将要排序的元素数。 在循环中,它比较数组[j]和数组[j+1]处的元素,以查看它们是否需要交换。当j是最后一个测试的前一个且j+1是最后一个测试时,回路应停止。这就是为什么j从0开始,在j为num-i-1时结束

    2) 它将位置j处的数字与位置j+1处的数字进行比较。如果你将数字按从左到右的顺序写在一行中,这将是位置j处的数字和其后的数字(从右到右)之间的比较

    3) 您必须创建一个元素索引数组。此数组将使用从0到num-1的值进行初始化。然后迭代该数组,并将该条目与随机选择的另一个条目交换。要执行此操作,请在0和num-1之间选择一个随机数。这将洗牌元素索引数组。 要以随机顺序打印数字,可以使用元素索引数组中存储的值作为要显示的下一个数字的索引。这样可以确保顺序是随机的,每个数字只显示一次,并且所有数字都显示


    我不明白那个问题

    第30行代码正在执行
    j+1
    这就是为什么条件是
    j数组[j])
    {
    温度=阵列[j];
    数组[j]=数组[j-1];
    阵列[j-1]=温度;
    }
    }
    }
    
    如果您想以随机方式显示数组,则无需排序!!因为数组中已经没有顺序


    您可以编写自己的逻辑来随机显示数组元素。

    用输入数组中的值编写一堆文件。使用气泡排序算法手动排序。请注意您的(手动)实现与该站点中的C程序实现之间的差异(或相似之处)。就在这里,谢谢@pmgWhy给他投票?他学会了C.@peace_,在代码中我补充了答案,这是简单的逻辑,你们可以用自己的方式改变逻辑。冒泡排序有很多种方法。当你提到“索引”时,你的意思是什么?@peace\u in\u code index是一个术语,常用于正在访问的数组中的位置。因此在表达式
    array[i]
    中,
    i
    是索引。由于这个原因,方括号
    []
    通常被称为数组索引运算符。C标准使用术语“数组下标”,但您经常听到它被称为“索引”。在这种情况下,
    if
    condition
    j
    不能大于
    j+1
    对吗?那么语句是如何执行的呢?我可能遗漏了一些东西。@peace\u在代码中比较的不是
    j
    j+1
    ,而是使用它们来索引到
    数组中。比较的是这两个位置的数组内容。现在我知道了。问题3)和问题4)是相同的,因此不必担心。我在另一个程序中使用了一个
    rand()
    函数来显示随机值。我如何为它设定种子?每次运行时,它都会给我相同的值。使用什么函数?我更喜欢以
    j=0
    的形式启动
    for
    循环,但这很有见地。@peace\u in\u code这取决于您的选择,但两者都可以正常工作。
    for (i = 0; i < num; i++)
        {
            for (j = 1; j < (num - i); j++)
            {
                if (array[j-1] > array[j])
                {
                    temp = array[j];
                    array[j] = array[j-1];
                    array[j-1] = temp;
                }
            }
        }