0
对于我的生活,我无法让这段代码正确排序。这是一个递归实践,通过对用户输入的五个数字进行排序,然后从最小到最大显示这五个数字。它大部分都是正确的,但偶尔它会把第一个或最后一个数字弄乱,然后用数组中的另一个数字切换它。我知道问题出在交换的功能之内,在第二个'if'语句中,但我无法弄清楚如何解决它,我真的很感谢方向至于如何继续。这是我的代码:无法让我的代码正确地排序用户输入的数组数组(使用递归)
#include <iostream>
#include <array>
using namespace std;
void mySort(int nums[], int first, int size);
int main()
{
int fiveNumbers[5];
int firstNum = 0;
int size = 5;
cout << "Please enter five numbers, pressing enter after each.\n\n";
for (int i = 0; i < 5; i++)
{
cout << "Enter a number: ";
cin >> fiveNumbers[i];
cout << endl;
}
mySort(fiveNumbers, firstNum, size);
for (int i = 0; i < size; i++)
{
cout << fiveNumbers[i] << endl;
}
system("PAUSE");
return 0;
}
void mySort(int nums[], int first, int size)
{
if (size == 0)
{
return;
}
for (int i = 0; i < 5; i++)
{
if (first < nums[i])
{
swap(nums[first], nums[i]);
}
}
first++;
size--;
return mySort(nums, first, size);
}
改变了我的功能,以反映阵列AT点“第一”的值,而不是变量“第一”本身。到目前为止,它每次都有效!
void mySort(int nums[], int first, int size)
{
if (size == 0)
{
return;
}
for (int i = 0; i < 5; i++)
{
if (nums[first] < nums[i])
{
swap(nums[first], nums[i]);
}
}
first++;
size--;
return mySort(nums, first, size);
}
您需要[进行紧急约见你的橡皮鸭(https://en.wikipedia.org/wiki/ Rubber_duck_debugging)并向你的橡皮鸭解释你的算法。因为在你的算法中,同一个值first将用作比较“first
啊哈!疑难杂症。我正在使用变量'first'而不是数组AT'首先'的点。感谢您帮助初学者! –