C++ 选择排序( vector )

标签 c++ sorting

int temp;
for (int j = 0; j < vecsize - 1; ++j) {

    int min = sort.at(j);
    for (int i = j+1; i < vecsize; ++i) {
        if (min > sort.at(i)) {
            min = sort.at(i);  
            temp = i;
        }

    }  
swap(sort.at(j), sort.at(temp));
}

我正在尝试(按升序)对 vector 进行排序:23 42 4 16 8 15

但是,我尝试使用选择排序输出:4 8 15 23 16 42

我做错了什么?

最佳答案

当您定义 min 时,您似乎是在为它分配第 j 个索引处的数组排序值。然而,您正在使用一个额外的变量 tmp 来交换元素,并且您似乎无法在内部 for 循环之前对其进行初始化,类似于您初始化 min 的方式。如果数组中的所有其他元素都小于 sort[j] 处的元素,则 tmp 将在外循环的该次迭代中未初始化,可能导致其中包含不正确的值。

int temp;
for (int j = 0; j < vecsize - 1; ++j) {
    int min = sort.at(j);
    temp = j;                                     # HERE'S WHAT'S NEW
    for (int i = j+1; i < vecsize; ++i) {
        if (min > sort.at(i)) {
            min = sort.at(i);  
            temp = i;
        }
    }  
    swap(sort.at(j), sort.at(temp));
}

您可能会在工作中看到这段代码 here .它似乎产生了所需的输出。

关于C++ 选择排序( vector ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41760341/

相关文章:

c++ - 为什么我将两个短整数相乘得到一个负数?

c++ - 剪切面到视口(viewport)

c++ - 为什么我的代码在 SPOJ 上给出了错误的答案?

c++ - 为什么 std::nth_element 返回 N < 33 元素的输入 vector 的排序 vector ?

vba - Excel VBA Excel 如何对重复值进行排序?

sorting - thenComparing 与 thenComparingInt 的性能 - 使用哪个?

c++ - 在初始案例后将值传递给变量

c++ - 在 NPAPI 中使用 VMR9 进行视频渲染

c++ - 在 std::move() 之后使字符串为空的机制

wordpress - Woocommerce,对基于短代码的产品列表进行排序下拉