Ich habe Google gesucht und ich kann nichts dafür finden. Ich suchte nach verschiedenen Arten von Arten (wie Sie in einer meiner vorherigen Fragen sehen können) und ich fragte mich, ob jemand eine rekursive Blasenkodierung kannte. Die Idee klingt für mich lächerlich, aber ich möchte auf Dinge vorbereitet sein und bin gespannt, ob das möglich ist oder nicht. Ich bin mir sicher, dass es möglich ist, wie ein Professor von mir das von seinen Schülern in der Vergangenheit gefragt hat. Ich glaube nicht, dass er Fragen wiederholen wird, aber ich wurde neugierig und wollte wissen, ob Code für eine Blasensorte rekursiv vorhanden war.Bubble Sort rekursiv
1
A
Antwort
0
Es ist sicherlich möglich, dies zu tun, da jeder iterative Algorithmus in einen rekursiven umgewandelt werden kann und umgekehrt.
Hier ist eine Möglichkeit, wie wir dies tun können. Der Einfachheit halber verwende ich C++ und nehme an, dass die Eingaben alle Ganzzahlen sind.
void bubbleSort(std::vector<int>& list) {
/* Make one pass of swapping elements. If anything was swapped,
* repeat this process.
*/
if (swapPass(list)) {
bubbleSort(list);
}
}
/* Does a pass over the array, swapping adjacent elements if they're
* out of place. Returns true if anything was swapped and false
* otherwise.
*/
bool swapPass(std::vector<int>& list) {
return recSwapPass(list, 0, false);
}
/* Does a swap pass starting from index given information about
* whether a swap was made on the pass so far. Returns true if across
* the entire pass a swap was made and false otherwise.
*/
bool recSwapPass(std::vector<int>& list, unsigned index,
bool wasSwapped) {
/* Base case: If we're at the end of the array, then there's
* nothing to do and we didn't swap anything.
*/
if (index + 1 >= list.size()) return wasSwapped;
/* Compare the current element against the next one and see if
* they need to swap.
*/
if (list[index] > list[index + 1]) {
std::swap(list[index], list[index + 1]);
return recSwapPass(list, index + 1, true);
} else {
return recSwapPass(list, index + 1, wasSwapped);
}
}
Interessanterweise hier jede rekursive Funktion ist Schwanz-rekursiv, so dass ein guter optimierenden Compiler sollte in der Lage sein, nicht-rekursive Code zu generieren. Mit anderen Worten, ein guter Compiler sollte so ziemlich den gleichen Code erzeugen, wie wenn wir dies iterativ geschrieben hätten. Wenn ich die Zeit bekomme, überprüfe ich, ob das tatsächlich passiert. :-)
Verwandte Themen
- 1. bubble sort mit Linkliste
- 2. Optimized Bubble Sort (Java)
- 3. Javascript: Bubble Sort
- 4. bubble sort komplexity analysis
- 5. Bubble Sort logischer Fehler VB.NET
- 6. Running Through Ruby Bubble Sort
- 7. Bubble Sort Nicht retournierende Liste
- 8. Java bubble sort code Probleme
- 9. Mehrere Fehler & Bubble sort error
- 10. praktische Unterschied zwischen zwei Bubble Sort Schleifen
- 11. Rekursion verstehen (Anwendung auf Bubble Sort)
- 12. Bubble Sort mit zufällig generierten Array
- 13. Ist meine Bubble-Sort-Implementierung korrekt?
- 14. Java Bubble sort auf randomisierten ListArray
- 15. Wie debugge ich meinen Bubble Sort Code?
- 16. Warum ist meine Java-basierte Bubble-Sort Outperforming meine Auswahl Sort und meine Einfügung Sort
- 17. Ausführung von Bubble-Sort ist 5 mal langsamer mit --indy
- 18. Vektor-Index außerhalb des Bereichs Fehler, C++, Bubble-Sort
- 19. Verwenden von bubble-sort zum Sortieren einer Textdatei nach Zeilen
- 20. Welcher ist der richtige Bubble Sort und welcher ist besser?
- 21. Wie sortiere ich eine Treemap mit Bubble Sort?
- 22. Shell sortieren nur 3 mal schneller als Bubble sort?
- 23. PlotBars Prozedur in Pascal für Bubble Sort Algorithmus
- 24. Bubble Sortiere seltsames Verhalten
- 25. Welchen Vorteil bietet Shell-Sortierung im Vergleich zu Insertion/Bubble Sort?
- 26. lvalue erforderlich als linker Operand der Zuweisung C++ in Bubble Sort
- 27. Wie man mit Bubble Sort arbeitet, um die höchste Zahl zu bestimmen [C++]
- 28. Bubble EditText kontaktieren
- 29. Kivy Bubble arrow Unschärfe
- 30. Multithreading, parallele Bubble Sortierung
Duplizieren? http://stackoverflow.com/questions/1644440/bubble-sort-using-recursion-in-c – BeemerGuy
Ich würde nicht denken, dass Sie möchten - einer der Vorteile von Bubble-Sort ist, dass es einen geringen Speicher hat Overhead. Sie könnten es trivial rekursiv machen, etwa wenn der Algorithmus zwei Werte wechselt und dann rekursiv wird. –
Das ist wahr, und ich könnte mir nicht vorstellen, dass man das früher machen möchte. Es war mehr für Neugier. – muttley91