#include <iostream>
#include <cstdlib>
using std:: cin;
using std:: cout;
using std:: endl;
const int N=10;
void readarray(int array[], int N);
int bubble_sort (int array[], int size, int round,
int place);
int main()
{
int array[N];
readarray(array, N);
int round, place;
cout << bubble_sort(array, N, place, round);
return EXIT_SUCCESS;
}
void readarray(int array[], int N)
{
int i=0;
if (i < N)
{
cin >> array[i];
readarray(array+1, N-1);
}
}
int bubble_sort (int array[], int size, int round,
int place)
{
round =0;
place =0;
if (round < N-1) // this goes over the array again making sure it has
// sorted from lowest to highest
{
if (place < N - round -1) // this sorts the array only 2 cells at a
// time
if (array[0] > array[1])
{
int temp = array[1];
array[1]=array[0];
array[0]=temp;
return (array+1, size-1, place+1, round);
}
return (array+1, size-1, place, round+1);
}
}
我知道如何使用兩個for循環做一個冒泡排序,我想用遞歸來做。使用循環,你需要兩個for循環,我計算遞歸它可能還需要兩個遞歸函數/調用。這是我迄今爲止所擁有的。問題在於它只輸出一個數字,即1或0。我不確定我的退貨是否正確。使用遞歸排序數組的氣泡(無循環)C++
你忘了函數名'return'後,使之遞歸調用本身。另外,如果你的函數返回一個非空值(但是爲什麼呢),你需要一個「基本情況」return語句(沒有遞歸調用),可能在函數的最後。 – leemes
爲什麼?無論如何,這是一個可怕的算法。爲什麼會變得更糟?如果你想要一個低效的O(N^2)排序,插入排序和選擇排序至少簡單易懂。如果你只是想排序的東西,使用'std :: sort'。 –
@AlanStokes我想練習遞歸函數和冒泡排序似乎是一個很好的做法。所以任何幫助,將不勝感激。 –