【发布时间】:2016-02-20 07:34:47
【问题描述】:
我用 C++ 编写了一个选择排序程序。我已经检查并重新检查了代码,但逻辑非常好。但是代码没有正确排序数组:
// Selection Sort
#include <iostream>
using namespace std;
inline void swap( int& x, int& y) {
int temp = x;
x = y;
y = temp;
}
int main() {
const int n = 10;
int list[n];
string line(14, '-');
cout << '\n' << line << "\nSelection Sort\n" << line << '\n';
cout << "Enter " << n << " elements:\n";
for( int i = 0; i < n; ++i ) {
cin >> list[i];
}
for( int i = 0; i < n-1; ++i ) {
int small = i;
for( int j = 1; j < n; ++j ) {
if( list[j] < list[small] ) {
small = j;
}
}
if( list[small] < list[i] ) {
swap( list[i], list[small]);
}
}
cout << "Sorted Array:\n";
for( int i = 0; i < n; ++i ) {
cout << list[i] << ' ';
}
return 0;
}
我哪里错了?选择排序的算法在这里给出:Selection Sort- wikipedia
10 个数字的示例输入:
7 8 9 10 11 12 13 14 15 16
输出:
7 9 10 11 12 13 14 15 8 16
【问题讨论】:
-
从技术上讲,您的程序不是有效的 C++ 程序,因为 C++ 没有 variable-length arrays。如果您想要一个在运行时设置大小的“数组”,请使用
std::vector。 -
在调试器中逐步执行此操作,并找出它在哪一点没有按照您的预期执行。
标签: c++ algorithm sorting math