Seleccionar concepto de clasificación
La clasificación de la selección también es un algoritmo de clasificación de intercambio, que tiene una cierta similitud con la clasificación de burbujas. Por lo tanto, personalmente creo que seleccionar la clasificación puede considerarse como un algoritmo mejorado para la clasificación de burbujas. Su idea es la siguiente:
Supongamos que la matriz arr [] está ordenada y tiene n elementos.
1 Compare el primer elemento (en Java, el subíndice es 0) con el segundo elemento. Si el primero es más grande que el segundo, entonces debe no ser el más pequeño, pero no nos apresuramos a intercambiar una clasificación de burbujas. Podemos establecer una variable temporal A para almacenar el subíndice de este elemento más pequeño actualmente. Luego continuamos comparando el elemento más pequeño con el tercer elemento. Si todavía no es el más pequeño, entonces modificamos el valor de a. De esta manera, hasta que se complete la comparación con el último elemento, es seguro que A debe ser el subíndice del elemento más pequeño.
2. Si el valor de A no es 0 (el valor inicial, es decir, el subíndice del primer elemento), intercambie los dos elementos con los subíndices A y 0.
3. Repita el proceso anterior y comience la comparación con el elemento con el subíndice 1 esta vez, porque el elemento más pequeño se ha colocado en la posición con el subíndice 0.
4. De esta manera, hasta que solo quede el último elemento, puede estar seguro de que este elemento es el más grande.
5. La clasificación se completa.
Obviamente, este algoritmo también requiere rondas de clasificación N-1.
Cabe señalar que la explicación anterior es solo la forma de encontrar el valor mínimo cada vez. De hecho, también puede encontrar el valor máximo cada vez, pero debe ponerlo en la cola de la matriz cada vez.
Código de implementación de Java:
SelectArray.java
Paquete CH02; clase pública SelectArray {// Array Private Long [] arr; // tamaño de datos válidos en matriz private int elems; // Constructor predeterminado público selectArray () {arr = new Long [50]; } public selectArray (int max) {arr = new Long [max]; } // Insertar datos public void insert (valor largo) {arr [elems] = valor; Elems ++; } // mostrar datos public void display () {for (int i = 0; i <elems; i ++) {system.out.print (arr [i]+""); } System.out.println (); } // Seleccione Ordenar public Void selectSort () {int min = 0; largo tmp = 0l; para (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; }}}Código de prueba:
Paquete 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 (); }} resultado: