Sélectionner le concept de tri
Le tri de sélection est également un algorithme de tri d'échange, qui a une certaine similitude avec le tri des bulles. Par conséquent, je crois personnellement que la sélection du tri peut être considérée comme un algorithme amélioré pour le tri des bulles. Son idée est la suivante:
Supposons que le tableau Arr [] soit maintenant trié et qu'il contient des éléments.
1 Comparez le premier élément (en Java, l'indice est 0) avec le deuxième élément. Si le premier est plus grand que le second, alors ce n'est pas le plus petit, mais nous ne nous précipitons pas pour échanger comme le tri des bulles. Nous pouvons définir une variable temporaire A pour stocker l'indice de cet élément actuellement le plus petit. Ensuite, nous continuons à comparer le plus petit élément avec le troisième élément. S'il n'est toujours pas le plus petit, nous modifions la valeur de a. De cette façon, jusqu'à ce que la comparaison avec le dernier élément soit terminée, il est certain que A doit être l'indice du plus petit élément.
2. Si la valeur de A n'est pas 0 (la valeur initiale, c'est-à-dire l'indice du premier élément), échangez les deux éléments avec les indices A et 0.
3. Répétez le processus ci-dessus et démarrez la comparaison avec l'élément avec l'indice 1 cette fois, car le plus petit élément a été placé à la position avec l'indice 0.
4. De cette façon, jusqu'à ce que seul le dernier élément ne reste, vous pouvez être sûr que cet élément est le plus grand.
5. Le tri est terminé.
De toute évidence, cet algorithme nécessite également des tours de tri N-1.
Il convient de noter que l'explication ci-dessus n'est que le moyen de trouver la valeur minimale à chaque fois. En fait, vous pouvez également trouver la valeur maximale à chaque fois, mais vous devez le mettre à chaque fois sur la queue du tableau.
Code d'implémentation Java:
SelectArray.java
Package CH02; classe publique selectArray {// Array Private Long [] arr; // Taille des données valides dans le tableau Int elems privé; // Constructeur par défaut public selectArray () {arr = new Long [50]; } public selectArray (int max) {arr = new long [max]; } // insérer des données publiques void insert (valeur longue) {arr [elems] = valeur; elems ++; } // Afficher les données publiques void affiche () {for (int i = 0; i <elems; i ++) {System.out.print (arr [i] + ""); } System.out.println (); } // Sélectionner le tri public void selectSort () {int min = 0; TMP long = 0l; for (int i = 0; i <elems -1; i ++) {min = i; for (int j = i + 1; j <elems; j ++) {if (arr [j] <arr [min]) {min = j; }} tmp = arr [i]; arr [i] = arr [min]; arr [min] = tmp; }}}Code de test:
package 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.Selectorst (); sarr.display (); }} résultat: