Wählen Sie Sortierkonzept
Die Sortierung der Auswahl ist auch ein Austauschsortieralgorithmus, der eine gewisse Ähnlichkeit mit der Sortierung von Blasen aufweist. Daher glaube ich persönlich, dass die Auswahl der Sortierung als verbesserter Algorithmus für die Sortierung von Blasen angesehen werden kann. Seine Idee ist wie folgt:
Angenommen, das Array arr [] ist jetzt sortiert und hat n Elemente.
1 Vergleichen Sie das erste Element (in Java, der Index ist 0) mit dem zweiten Element. Wenn ersterer größer als der letztere ist, muss es nicht das kleinste sein, aber wir beeilen uns nicht, wie Blasensortierungen zu tauschen. Wir können eine vorübergehende Variable A festlegen, um das Einweis dieses derzeit kleinsten Elements zu speichern. Dann vergleichen wir weiterhin das kleinste Element mit dem dritten Element. Wenn es immer noch nicht das kleinste ist, ändern wir den Wert von a. Auf diese Weise ist es sicher, dass ein Einweis des kleinsten Elements sein muss, bis der Vergleich mit dem letzten Element abgeschlossen ist.
2. Wenn der Wert von a nicht 0 ist (der Anfangswert, dh das Index des ersten Elements), tauschen Sie die beiden Elemente mit dem Index A und 0 aus.
3. Wiederholen Sie den obigen Vorgang und starten Sie den Vergleich mit dem Element mit dem Index 1 dieses Mal, da das kleinste Element mit dem Index 0 an der Position platziert wurde.
4. Auf diese Weise können Sie sicher sein, dass dieses Element das größte ist.
5. Sortierung ist abgeschlossen.
Offensichtlich erfordert dieser Algorithmus auch N-1-Sortierrunden.
Es ist zu beachten, dass die obige Erklärung nur der Weg ist, den Mindestwert jedes Mal zu finden. Tatsächlich können Sie jedes Mal auch den Höchstwert finden, aber Sie müssen ihn jedes Mal auf den Schwanz des Arrays legen.
Java -Implementierungscode:
SelectArray.java
Paket CH02; öffentliche Klasse SelectArray {// Array privat long [] arr; // Größe gültiger Daten in Array Private Int Elems; // Standardkonstruktor public SelectArray () {arr = new Long [50]; } public SelectArray (int max) {arr = new long [max]; } // Daten public void Insert (langer Wert) {arr [elems] = value; Elems ++; } // Daten public void display () {für (int i = 0; i <elems; i ++) {System.out.print (arr [i]+"); } System.out.println (); } // Wählen Sie public void selectSort () {int min = 0; langes tmp = 0l; für (int i = 0; i <elems -1; i ++) {min = i; für (int j = i+1; j <elems; j ++) {if (arr [j] <arr [min]) {min = j; }} tmp = arr [i]; arr [i] = arr [min]; arr [min] = tmp; }}}Testcode:
Paket CH02; public class testSelectArray {public static void main (String [] args) {selectArray sarr = new SelectArray (); Sarr.insert (89); Sarr.insert (54); Sarr.insert (667); Sarr.insert (7); Sarr.insert (12); Sarr.insert (43); Sarr.insert (12); sarr.display (); Sarr.SelectSort (); sarr.display (); }} Ergebnis: