【发布时间】:2014-12-11 03:08:53
【问题描述】:
我的排序算法不断输出 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;
}
}
}
【问题讨论】:
-
您缺乏计划并不构成我们的紧急情况。下一次,早点开始你的家庭作业。并且请不要认为我过于苛刻,我必须告诉我自己的儿子同样的该死的事情。有时失败是件好事,它让你下次失败的可能性更小,让你为现实世界做好准备:-)
-
冒泡排序是最容易实现的。如果你想交一些东西,重写它,让它进行冒泡排序。
-
但是,如果您学习了一些基本的调试技能(在实际调试器中或通过明智地放置
printf语句),您应该能够弄清楚发生了什么。当最重要的技能是调试时,机构往往会专注于编码。恕我直言。 -
还有一件事:
keeps turning out 10-15 each of the same number,您知道知道 2000 个数字都在 1-100 范围内,平均每个数字大约有 20 个副本,对吧?而且,如果你对它们进行排序,你会看到:1 1 1 1 1 2 2 2 2 3 3 3 3...(但每个大约有 20 个)。你确定你不只是向风车倾斜吗? -
要检查这一点,请从原始的 2000 元素数组开始,计算每个数字 (1-100) 的数量。然后对您的排序数组执行相同的操作。如果计数在排序前和排序后相同,则没有问题。