【发布时间】:2018-01-07 07:19:15
【问题描述】:
我正在尝试进行选择排序,其中我正在遍历整数列表,挑选出最小的数字,并将其与列表中较早的更大数字交换。这段代码只是在练习一个由 4 个整数组成的短字符串。我正在努力的是在继续之前通过整个整数列表找到最小的数字。我发现这作为它自己的嵌套 for 循环非常有效,但是当我尝试交换整数时,我无法“记住”最小数字所在的索引(这将是被注释掉的代码行,因为它不知道'j'是什么)。如果我尝试在 for 循环中执行此操作,那么我会过早地交换第一个小于我正在交换的整数的整数,然后再查看是否还有其他更小的整数。任何正确方向的提示将不胜感激。谢谢!
int main (void)
{
int tmp;
int n = 4;
int values[] = {5,3,4,1};
for (int i=0; i < n; i++)
{
int minimum = values[i];
for (int j=1; j < n; j++)
{
if (values[j]<minimum)
{
minimum=values[j];
}
}
tmp = values[i];
values[i] = minimum;
//values[j] = tmp;
}
}
【问题讨论】:
-
您可以记住
j在另一个变量中,例如minimum_j = j,其中int minimum_j在函数范围内定义。或i或其他。 -
int minimum = values[i];-->int min_i = i;喜欢this
标签: c sorting for-loop nested selection-sort