我正在創建一個小程序,應該按升序對數組中的整數進行排序,但我非常卡在我應該使用的算法中。我不能迭代數組,我必須使用遞歸函數。我被允許有一個輔助函數,它可以在數組中找到最小的索引,我已經成功完成了這個工作,但是我正在最困難的時候弄清楚如何使用該函數對遞歸函數中的數組進行排序。這裏是我到目前爲止的代碼,我明白我的sortIntegers函數是關閉的。C++排序數組遞歸
int main()
{
int numbers[] = {8, 2, 5, 1, 3};
sortingIntegers(numbers, 5);
return 0;
}
void sortingIntegers(int *list, int size) {
if (size == 1) {
for (int i = 0; i < size; i++) {
cout << list[i] << ", ";
}
} else {
for (int z = 0; z < size; z++) {
if (list[size - 1] == smallestIndex(list)) {
for (int y = 0; y < size; y++) {
swap(list[z], list[y]);
}
}
}
sortingIntegers(list, size - 1);
}
}
int smallestIndex(int *array) {
int smallest = array[0];
for (int i = 1; i < sizeof(array); i++) {
if (array[i] < smallest) {
smallest = array[i];
}
}
return smallest;
}
您是否需要使用遞歸實現一些特定的排序算法? – DixonD 2015-02-10 07:25:17
@DixonD,我不需要使用任何特定的排序算法,除了它必須利用遞歸函數進行排序。 – andayn 2015-02-10 07:34:54
如果你正在遞歸,你不應該循環。 – molbdnilo 2015-02-10 07:41:27