【发布时间】:2017-06-28 10:12:49
【问题描述】:
我正在尝试编写一个递归函数,通过选择对一个小数组进行排序。我可以加载并运行所有内容,但是当数组为{3, 1, 8, 5} 时的输出一直输出为{1, 3, 3, 3}。我认为这与最小值的分配方式有关,但我坚持到底在哪里。有什么建议吗?
#include <iostream>
#include <conio.h>
#include <array>
using namespace std;
int arrLength = 4;
int minimum;
int counter = 0;
int sortedArr[];
int tempArr[];
void sortFunc(int, int);
int valueArr[4] = { 3,1,8,5 };
int tempArr[4] = {};
void main() {
cout << "Before sorting..." << endl;
for (int i = 0; i < 4; i++) {
cout << valueArr[i] << " ";
}
cout << endl;
sortFunc(4, counter);
cout << "After sorting..." << endl;
for (int i = 0; i < 4; i++) { //either broken here
cout << tempArr[i] << " ";
}
_getch();
}
void sortFunc(int size, int counter) {
minimum = valueArr[0];
for (int i = 1 + (counter); i < size; i++) { //or here
if (valueArr[i] < minimum) {
minimum = valueArr[i];
}
}
tempArr[counter] = minimum;
if (counter < size) {
counter++;
sortFunc(size, counter);
}
}
【问题讨论】:
-
如果您以前没有使用过调试器,那么现在是学习它的最佳时机。使用调试器,您可以逐行单步执行代码,同时监视变量及其值。能够使用调试器对于任何程序员来说都是一项至关重要的技能。
-
哦,你有 一些 检查
counter没有越界,但不是真正需要的地方,所以你 将 离开界限并具有未定义的行为。如果您使用调试器,这将非常明显。
标签: c++ arrays algorithm recursion selection-sort