Blasensortierung
Grundidee: Sortieren Sie in einem zu sortierenden Zahlensatz für alle Zahlen im Bereich, die derzeit nicht sortiert sind, die beiden benachbarten Zahlen in der Reihenfolge von oben nach unten. Vergleichen Sie und Passen Sie den Wert so an, dass größere Zahlen sinken und kleinere Zahlen steigen.
Das heißt: Immer wenn zwei benachbarte Zahlen verglichen werden und sich herausstellt, dass ihre Reihenfolge der Reihenfolgeanforderung entgegengesetzt ist, werden sie vertauscht.
Das Ergebnis des ersten Vergleichs und der Sortierung: Die größten Daten werden im größten Index platziert.
Das Ergebnis des zweiten Vergleichs und der Sortierung: Da die größten Daten erstmals im größten Index platziert wurden , also sind die zu vergleichenden Daten dieses Mal -1 mehr als die Anzahl der Elemente im Array, und die zweitgrößten Daten werden auch im zweitgrößten Index eingestuft.
Das Ergebnis der dritten Vergleichssortierung: Es ist fast so Das Gleiche wie beim zweiten Mal, außer dass die zu vergleichenden Daten dieses Mal 2 weniger als die Anzahl der Elemente im Array sind.
Das vierte Mal: 3 weniger...
Zusammenfassend: Sortieren der Daten Wenn Sie das Array von klein nach groß verschieben, ist die Gesamtzahl der Vergleiche -1-mal größer als die Länge des Arrays. Mit zunehmender Anzahl der Vergleiche nimmt die Anzahl der zu vergleichenden Daten jedes Mal ab.
public class Demo4 { public static void main(String[] args) { int number[]={49,38,65,97,76,13,27,14,10}; for(int i=0;i<number.length-1;i++){ for(int j=0;j<number.length-1-i;j++){ if(number[j]>number[j+1]){ int tmp=number[j]; number[j]=number[j+1]; number[j+1]=tmp; } } for (int j = 0; j < number.length; j++) { System.out.print(number[j]+"\t"); } System.out.println("排序"+(i+1)+"次后的结果"); } } }
Auswahlsortierung
Grundlegende Methode:
Beginnen Sie mit dem Index 0, vergleichen Sie die folgenden Elemente nacheinander, setzen Sie die kleineren zuerst und nach dem ersten Mal das Minimum Wert erscheint Beim kleinsten Index wird der zweitkleinste Wert zum zweiten Mal gefunden.
Wie setzt man es konkret um?
Zuerst werden in der ersten Runde die Daten auf Index 0 nacheinander mit den Daten auf jedem nachfolgenden Index verglichen, bis auf Daten gestoßen wird, die kleiner sind als dieser. Zu diesem Zeitpunkt ersetzen diese kleinen Daten die ursprünglichen Daten auf Index 0. Anschließend werden die ersetzten Daten weiterhin mit den Daten auf dem Index hinter ihrer ursprünglichen Indexposition verglichen. Mit anderen Worten: Nach der ersten Runde müssen die Daten auf Index 0 die kleinsten Daten in diesem Array sein
In der zweiten Runde werden die Daten auf Index 1 zum Vergleich mit den nachfolgenden Daten verwendet. Zu diesem Zeitpunkt sind die am Vergleich teilnehmenden Daten um eins weniger als die ursprünglichen Daten.
In der dritten Runde wird es eins weniger geben , sodass der Wert von j im Zyklus + 1 ist, was dem Indexindex ab j + 1 entspricht.
public class Demo5 { public static void main(String[] args) { int number[]={49,38,65,97,76,13,27,14,10}; for(int i=0;i<number.length;i++){ for(int j=i+1;j<number.length;j++){ if(number[i]>number[j]){ int tmp=number[i]; number[i]=number[j]; number[j]=tmp; } } for (int j = 0; j < number.length; j++) { System.out.print(number[j]+"\t"); } System.out.println("第"+(i+1)+"次排序后的结果"); } } }
Einfügungssortierung
Einfügungssortierung besteht darin, die aktuell zu sortierenden Elemente in eine bereits sortierte Liste einzufügen. Ein sehr anschauliches Beispiel ist das Ergreifen einer Spielkarte mit der rechten Hand und das Einlegen in die sortierten Spielkarten, die die linke Hand hält.
Die schlechteste Laufzeit der Einfügungssortierung ist O(n2), daher ist es nicht der optimale Sortieralgorithmus.
Wenn das Eingabearray bereits sortiert ist, erfolgt die Einfügungssortierung optimal und ihre Laufzeit ist eine lineare Funktion der Eingabegröße.
Wenn das Eingabearray in umgekehrter Reihenfolge sortiert wird, tritt der schlimmste Fall ein. Der durchschnittliche Fall ist derselbe wie der schlimmste Fall und sein Zeitaufwand beträgt Θ(n2).
public class Demo6 { public static void main(String[] args) { //定义一个整型数组 int[] nums = new int[]{4,3,-1,9,2,1,8,0,6}; //打印没有进行排序的数组 System.out.println("没有排序之前的结果:" + Arrays.toString(nums)); for(int index=0; index<nums.length; index++) { //获得需要插入的数值 int key = nums[index]; //取得下标值 int position = index; //循环比较之前排序好的数据,找到合适的地方插入 while(position >0 && nums[position-1] > key) { nums[position] = nums[position-1]; position--; } nums[position] = key; } //打印排序后的结果 System.out.println("排序后的结果:" + Arrays.toString(nums)); } }
Das obige ist der detaillierte Inhalt vonTeilen Sie die Ideen und Beispielcodes verschiedener Sortieralgorithmen in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!