c++ - 排序算法不起作用

标签 c++ sorting

我的排序算法不断产生 10-15 个相同的数字,它假设对我的数组进行排序,该数组的大小为 2000,数字为 1-100。这是我一直在编码的家庭作业 在 C++ 中使用了 4 个月,我整天都在研究它,它的截止日期是 12:00。请帮忙。就是想不通算法

//Function to sort the numbers
void sortNumbers(int nums[], int ARRAY_SIZE) {
    int startScan, minIndex, minValue;
    for (startScan = 0; startScan < (ARRAY_SIZE-1); startScan++) {
        minIndex = startScan;
        minValue = nums[startScan];

        for(int index = startScan+1; index < ARRAY_SIZE; index++) {
            if(nums[index]<  minValue) {
                minValue = nums[index];
                minIndex = index;
            }

            nums[minIndex] = nums[startScan];
            nums[startScan] = minValue;
        }
    }
}

最佳答案

您只需要在内循环之外进行交换。

获取这部分

nums[minIndex] = nums[startScan];
nums[startScan] = minValue;

跳出内循环。

您的代码应如下所示:

void sortNumbers(int nums[], int ARRAY_SIZE) {
    int startScan, minIndex, minValue;
    for (startScan = 0; startScan < (ARRAY_SIZE-1); startScan++) {
        minIndex = startScan;
        minValue = nums[startScan];

        for(int index = startScan+1; index < ARRAY_SIZE; index++) {
            if(nums[index]<  minValue) {
                minValue = nums[index];
                minIndex = index;
            }
        }

        nums[minIndex] = nums[startScan];
        nums[startScan] = minValue;
    }
}

下面是对选择排序的非常清楚的解释,包括图像和步骤:http://www.algolist.net/Algorithms/Sorting/Selection_sort

关于c++ - 排序算法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27414727/

相关文章:

c++ - 如果我只想要结构良好的工作区但不一定要分开编译,如何在 C++ 中组织头文件/代码文件?

c++ - Boost 1.65.1 几何距离策略使用 Visual Studio 2017 编译错误

MySQL - 在 WHERE 子句中按日期排序

java - 使用 linkedList 的合并排序无法正常工作 - 在 Java 中实现

MySQL按0排序最大

c++ - UDP 一次读取整个套接字缓冲区

c++ - 在 Eclipse IDE 中执行时交错输入和输出

c++ - 这是有效的 ANSI C++ 代码吗?尝试在编译时生成结构成员的偏移量

javascript - 按某些字母出现的次数对数组进行排序

c++ - 链表在当今世界的真正用途