Quick Sort ist eine Verbesserung der Blasensortierung, die auf der binären Idee basiert. Die Hauptidee besteht darin, eine Basis festzulegen, die Zahlen, die kleiner als die Basis sind, links von der Basis und die Zahlen, die größer als die Basis sind, rechts von der Basis zu platzieren und dann die beiden Teile der Zahlen weiter zu sortieren, um sie zu erhalten Sortierung des Arrays.
Sein Vorteil ist die hohe Effizienz und die durchschnittliche Zeitkomplexität beträgt O(nlogn). wird jedes Mal gleichmäßig aufgeteilt. Bei Arrays ist der Code relativ einfach.
Sein Nachteil besteht darin, dass es instabil ist. Wenn die Anfangssequenz geordnet oder grundsätzlich geordnet ist, sinkt die Zeitkomplexität auf O(n^2).
Zum Beispiel:
publicclassMain{//Schnelle Zeilenimplementierungsmethode publicstaticvoidquickRow(int[]array,intlow,inthigh){inti,j,pivot;//Endbedingung if(low>=high){return;}i=low;j=high;/ /Der ausgewählte Knoten, die erste Nummer des hier ausgewählten Arrays, wird als Knoten verwendet der Schleife, entweder wird sie gefunden oder i =jwhile(array[j]>=pivot&&i<j){j--;}//Suchen Sie am Ende der Schleife nach einer Zahl, die größer als der Knoten ist , entweder wird es gefunden, oder i=jwhile(array[i]<=pivot&&i <j){i++;}//Wenn i!=j Anweisungen gefunden werden, tauschen Sie die beiden Zahlen aus if(i<j){inttemp=array [i];array[i]=array[j];array [j]=temp;}}//i==j Ein Zyklus endet, die Anzahl der Austauschknoten und die Anzahl der Treffpunkte array[low]=array [i];array[i]=pivot;//array „divided“ „Zwei Hälften“, dann wiederholen Sie den obigen Vorgang quickRow(array,low,i-1);quickRow(array,i+1,high);} publicstaticvoidmain(String[]args){int[]array={6,17, 38,59,2,10};intlow=0,high=array.length-1;quickRow(array,low,high);for( inti:array){System.out.println(i);}}}Die Laufergebnisse sind wie folgt:
2610173859