Bubble Sort ist einer der einfacheren Sortieralgorithmen in der Programmierung. Es durchläuft wiederholt die zu sortierende Sequenz, vergleicht jeweils zwei Elemente und vertauscht sie, wenn sie in der falschen Reihenfolge sind. Wiederholen Sie den Besuch des Arrays, bis keine Elemente mehr ausgetauscht werden müssen, was bedeutet, dass das Array sortiert wurde.
Die Blasensortierung ähnelt Blasen, die aus dem Wasser auftauchen. Bei der Blasensortierung wird die kleinste oder größte Zahl verwendet. Je nachdem, ob wir das Array in aufsteigender oder absteigender Reihenfolge sortieren, tauchen die Blasen am Anfang oder am Ende des Arrays auf.
1) Vergleichen Sie benachbarte Elemente. Wenn das erste größer als das zweite ist, tauschen Sie die beiden aus.
2) Machen Sie dasselbe für jedes Paar benachbarter Elemente, beginnend mit dem ersten Paar und endend mit dem letzten Paar. An diesem Punkt sollte das letzte Element die größte Zahl sein.
3) Wiederholen Sie die obigen Schritte für alle Elemente außer dem letzten.
4) Wiederholen Sie die obigen Schritte für immer weniger Elemente, bis keine Zahlenpaare mehr zum Vergleichen vorhanden sind.
Die Blasensortierung schneidet im Vergleich zu anderen Sortieralgorithmen wie Schnellsortierung, Zusammenführungssortierung oder Shell-Sortierung schlecht ab. Die durchschnittliche Fallkomplexität dieser Algorithmen beträgt O(nlogn), während die durchschnittliche Fallkomplexität der Blasensortierung O(n^2) beträgt.
Im besten Fall ist die Blasensortierung besser als die Schnellsortierung mit O(n)-Leistung. Die Blasensortierung ist dreimal langsamer als die Schnellsortierung oder die Zusammenführungssortierung, selbst wenn n=100, aber sie ist einfacher zu implementieren und zu merken.
Die Komplexität und Leistung der Blasensortierung sind wie folgt:
1) Die Leistung der Blasensortierung im schlechtesten Fall ist O(n^2)
2) Die beste Leistung der Blasensortierung ist O(n)
3) Die durchschnittliche Leistung der Blasensortierung beträgt O(n^2)
//Blasensortierung publicstaticvoidbubbleSort(int[]arr){//Die äußere Schleife wird verwendet, um die Anzahl der Umdrehungen der Array-Schleife zu steuern for(inti=0;i<arr.length-1;i++){//Die innere Die Schleife wird verwendet, um den Vergleich der Elementwerte abzuschließen und die größeren Elementwerte nach hinten zu verschieben for(intj=0;j<arr.length-1-i;j++){if(arr[j]>arr [j+1]){inttemp= arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}//Ausgabeergebnis for(intn:nums){System .out.println(n);} }
Zum Beispiel:
publicclassMain{publicstaticvoidmain(String[]args){inta[]={6,1,15,32,9};for(inti=1;i<a.length;i++){for(intj=0;j<a .length-1;j++){if(a[j]>a[j+1]){inttemp=a[j];a[j]=a[j+1];a[j+1]=temp ;}}}System.out.println(Das Ergebnis der Blasensortierung ist:);for(inttemp:a){System.out.print(temp+);}}}
Die Laufergebnisse sind wie folgt:
Das Ergebnis der Blasensortierung ist: 1691532
Du kannst es selbst ausprobieren!