Benutzer-Werkzeuge

Webseiten-Werkzeuge


rekursion:quicksort:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

rekursion:quicksort:start [2024/09/08 13:32] – angelegt Martin Pabstrekursion:quicksort:start [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1
Zeile 1: Zeile 1:
-====== Quicksort ====== 
-Hier ein Video, das den Algorithmus erklärt: 
-{{youtube>8hHWpuAPBHo?large}} 
-<HTML> 
- 
-<div class="java-online" style="height: 650px; width: 100%" data-java-online="{'withBottomPanel': false, 'id': 'quicksort1'}"> 
- 
-<script type="text/plain" title="Hauptprogramm.java"> 
-// Quelle: https://de.wikipedia.org/wiki/Quicksort 
- 
-int[] zahlen = { 5, 5, 12, 4, 7, 8, 10, 9, 6, 3 }; 
- 
-Quicksort qs = new Quicksort(); 
-qs.sort(zahlen); 
- 
-qs.ausgabe(zahlen); 
- 
- 
-class Quicksort { 
-    
-   void sort(int[] daten) { 
-      sortRekursiv(daten, 0, daten.length - 1);  
-   } 
- 
-   void sortRekursiv(int[] daten, int indexLinks, int indexRechts) { 
-  
-      if(indexLinks >= indexRechts) return; 
- 
-      int pivot = daten[indexLinks];  
- 
-      int pointerLinks = indexLinks + 1; 
-      int pointerRechts = indexRechts; 
- 
-      while (pointerLinks < pointerRechts) { 
-          
-         while (pointerLinks < indexRechts &&  
-               daten[pointerLinks] <= pivot) { 
-            pointerLinks++; 
-         } 
-       
-         while (pointerRechts > pointerLinks &&  
-               daten[pointerRechts] > pivot) { 
-            pointerRechts--;  
-         } 
- 
-         if(daten[pointerLinks] > daten[pointerRechts]) { 
-            int z = daten[pointerLinks]; 
-            daten[pointerLinks] = daten[pointerRechts]; 
-            daten[pointerRechts] = z; 
-         } 
- 
-      } 
- 
-      // Pointer rechts konnte keinen Wert <= Pivot finden, 
-      // => Pointer links ist zu weit nach rechts gewandert 
-      if(daten[pointerLinks] > pivot) { 
-         pointerLinks--; 
-      } 
- 
-      // Falls das linke Teilintervall länger als 1 Element ist, 
-      // dann ist das Pivotelement das größte darin. 
-      // => Tausche es an den rechten Rand des linken 
-      // Teilintervalls und verschmälere das Intervall rechts um 1 
-      if(pointerLinks > indexLinks) { 
-         int z = daten[pointerLinks]; 
-         daten[pointerLinks] = daten[indexLinks]; 
-         daten[indexLinks] = z; 
- 
-         sortRekursiv(daten, indexLinks, pointerLinks - 1); 
-          
-      } 
-       
-      sortRekursiv(daten, pointerLinks + 1, indexRechts); 
- 
-   } 
-    
- 
-   void ausgabe(int[] daten) { 
-      for (int i = 0; i < daten.length; i++) { 
-         print(daten[i] + ", "); 
-      } 
-   } 
- 
- 
-} 
- 
- 
-</script> 
-</div> 
-</HTML> 
  
rekursion/quicksort/start.1725802348.txt.gz · Zuletzt geändert: 2024/09/22 04:37 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki