【发布时间】:2019-10-17 23:37:39
【问题描述】:
我正在编写一个特定的 c++ 程序,以根据我的教授的要求在 STL 列表上使用选择排序。
我使用的是 Netbeans 9.2。目前,我被我的算法卡住了。前几次,程序编译,但选择后的列表总是以相同的值结束(假设它应该是 99、24、15、80、27,它总是 1、1、1、1、 2 排序后)。现在该算法直接无法编译。我对编码比较陌生。有人可以告诉我我做错了什么以及我应该怎么做?非常感谢!
这是我的代码:
void selectionSort(list<short> l, int size) {
list<short>::iterator it1;
list<short>::iterator it2;
list<short>::iterator it3;
short min, temp;
for(it1 = l.begin(); it1 != l.end(); it1++) {
temp = min = *it1;
it2 = it1;
for(it2 = it1; it2 != l.end(); it2++) {
if(*it2 < min) {
min = *it2;
it3 = it2;
}
}
*it1 = min;
*it3 = temp;
//Increment the first counter at the end
temp = min = *it1;
}
}
【问题讨论】:
-
可能不会飞去完成作业,但请查看此处的示例以了解选择排序的一种方法:en.cppreference.com/w/cpp/algorithm/iter_swap
-
如果您在问题中包含编译器的错误消息,将更容易找出问题所在。
-
您能否告诉我们您需要如何准确地(基于什么标准)对列表进行排序?从大到小?你可以看看快速排序:en.wikipedia.org/wiki/Quicksort。
-
你需要改进你的问题以避免它被关闭,如果你的问题很清楚,你更有可能得到有用的答案。请查看如何提问:stackoverflow.com/help/how-to-ask 新手必须有机会改进他们的问题stackoverflow.com/conduct