Auswahl Sortieren rekursiv in C++
Ich scheinen zu produzieren ist ein Fehler mit meinem rekursive Auswahl Funktion Sortieren. Jede Hilfe würde geschätzt werden, dass bei der Festsetzung dieses Tier.
#include <iostream>
#include <algorithm>
using namespace std;
void selection_sort(int[],int);
int main()
{
int a[5] = {5,4,3,2,1};
selection_sort(a,5);
return 0;
}
void selection_sort(int arr[],int n){
int max_pos;
if(n == 0) return;
int max = *max_element(arr,arr+n);
for(int i = 0; i < n;i++){
if(arr[max] == max){
max_pos = i;
}
}
swap(arr[max_pos],arr[n-1]);
selection_sort(arr,n--);
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im Zusammenhang mit Ihrer Funktion (dies ist die Letzte Anweisung) das ist genau das gleiche wie:
Führt zu einer unendlichen Rekursion, da
n
ist nicht modifiziert, die in der Funktion. Was Sie wahrscheinlich wollen, ist dies:Auch, das ist falsch:
Du willst auf den index
i
, nichtmax
.Es ist offensichtlich, dass diese Aussage
ist ungültig. Es ist kein Sinn, das maximale element wie der index. Ich denke, du meintest die folgenden