我是c,c ++和java等编程语言的初学者 我真的需要有人来指导我这个 所以问题是: 这段代码,我在borland c ++上写道
1)
for (i = 0; i < n; i++)
{
for (j = i; j < n; j++)
{
if (number[i] > number[j])
{
a = number[i];
number[i] = number[j];
number[j] = a;
}
}
}
2)
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
if (number[i] > number[j])
{
a = number[i];
number[i] = number[j];
number[j] = a;
}
}
}
在第一个代码中,内部for循环中的逻辑j = i将按升序对数字进行排序,在第二个代码中,内部for循环j = 0中的逻辑将按降序对数字进行排序。
现在我的问题是:为什么逻辑j = i按升序对数字进行排序,为什么逻辑j = 0按降序对数字进行排序,有人可以解释工作概念和逻辑j = i之间的差异并且j = 0?
答案 0 :(得分:1)
第二个代码与第一个代码的不同之处在于循环开始按升序对数字进行排序(就像第一个代码一样)但是因为第二个代码(内部循环)将当前数字与已经排序的数字进行比较开始(这是最小的)交换位置。因此,我们首先得到最大的数字。看看它好像第一个代码是第二个代码的第一步:首先按顺序排列数字,然后按降序排列。