1. Algorithmus Beschreibung
Sortieren auswählen: In einer ungeordneten Array von Länge N, die N-1-Daten in der ersten Reise in der ersten Reise durch die zweite Reise aus dem kleinsten Wert erfassen, den kleinsten Wert ergeben und mit dem zweiten Element austauschen und mit dem zweiten Element tauschen.
Die folgenden 5 ungeordneten Daten werden als Beispiele verwendet:
56 12 80 91 20 (Der Auswahlverfahren der ersten Reise ist nur im Artikel verfeinert)
1. Reise: 12 56 80 91 20
2. Reise: 12 20 80 91 56
Reise 3: 12 20 56 91 80
4. Reise: 12 20 56 80 91
2. Algorithmusanalyse
Durchschnittliche Zeitkomplexität: O (N2)
Raumkomplexität: O (1) (für Austausch- und Datensatzindizes)
Stabilität: instabil (zum Beispiel werden die ersten [5] und [3] auf der ersten Reise der Sequenz [5, 5, 3] ausgetauscht, wodurch sich die ersten 5 hinter den zweiten 5 bewegt.
3.. Algorithmus -Implementierung
public class SelectionsSort {public static void main (String [] args) {int len = 15; int [] ary = new int [len]; Random random = new random (); für (int j = 0; j <len; j ++) {ary [j] = random.nextint (1000); } System.out.println ("------------------"); // ary = new int [] {10,9,8,7,6,5,4,3,2,1}; // Börsen testen // ary = new int [] {1,2,3,4,5,6,7,8,10,9}; // Testaustausch für (int j = 0; j <ary.length; j ++) {System.out.print (ary [j]+""); } selectDesc (ary); selectasc (ary); }/ * * Sortieren Sie sortieren: Abstieg */static void selectDesc (int [] ary) {int complexeCount = 0; // vergleiche Zeiten int echneCount = 0; // Anzahl der Börsen int len = ary.length; int maxValueIndex = -1; // den Mindestwertindex nach einer Runde von Vergleiche für (int i = 0; i <len - 1; i ++) {maxValueIndex = i; // von 0 für (int j = i+1; j <len; j ++) {if (ary [maxValueIndex] <ary [j]) {maxValueIndex = j; // größere Indexvergleiche aufzeichnen ++; }} // system.out.println ("minValueIndex ==" + maxValueIndex); if (maxValueIndex! }} System.out.println("/n------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ (int i = 0; i <len - 1; i ++) {minIndex = i; ary [minIndex]+(ary [minIndex] = ary [i]) * 0; System.out.println ("/n -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- für (int j = 0; j <ary.length; j ++) {System.out.print (ary [j]+""); }}}------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------