c - 如何在 C 中的 for 循环之外使用 for 循环索引(选择排序)

标签 c sorting for-loop nested selection-sort

我正在尝试进行选择排序,我将遍历一个整数列表,选出最小的数字,并将其与列表中前面的较大数字交换。这段代码只是用 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;    

    }
}    

最佳答案

您需要添加一个变量minimumIndex,它是最小值的索引。当您更新 minimum 的值时,将其设置为 j,它将在循环结束时为您提供最小值的索引。还要使用正确的值对其进行初始化:由于 mimimum 已初始化为 values[i],因此 minimumIndex 应初始化为 i .

另请注意,您有一个错误:您在 j=1 处启动内部循环,但它应该以 ii+1 开头code> 以便跳过已放置的元素。

关于c - 如何在 C 中的 for 循环之外使用 for 循环索引(选择排序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45420617/

相关文章:

c - 内存分配?

c - 定义字符串数组

javascript - Javascript 中的 For 循环优化

windows - 批处理文件 : How can I extract the substring of a value from a FOR loop using an index variable?

python - 为什么我的 Python XML 解析器在第一个文件后就中断了?

c - 在C中通过函数的参数访问结构成员

c - 将字符存储在字符串变量中

javascript - 如何使用键和排序顺序对嵌套数组进行排序

java - java中有argsort函数吗?

Java Custom Sort Order Round Robin-ish 排序