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'首先'的點。感謝您幫助初學者! –