我的排序算法不断产生 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;
}
}
}
最佳答案
您只需要在内循环之外进行交换。
获取这部分
nums[minIndex] = nums[startScan];
nums[startScan] = minValue;
跳出内循环。
您的代码应如下所示:
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;
}
}
下面是对选择排序的非常清楚的解释,包括图像和步骤:http://www.algolist.net/Algorithms/Sorting/Selection_sort
关于c++ - 排序算法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27414727/