Burbuja
Sorteo de burbujas, cuando vi este algoritmo, recordé el dicho "Los decimales flotan y los grandes números se hundieron". A través de la comparación de la capa por capa, los decimales flotan hacia la superficie, y los grandes números "hunden las piedras en el fondo del agua". Esto logra el efecto de la clasificación. La clasificación de burbujas es un algoritmo de clasificación simple. Visita repetidamente la secuencia para ser ordenada, compara dos elementos a la vez y los intercambia si son incorrectos. El trabajo de visitar la secuencia se repite hasta que no se necesita intercambio, es decir, la secuencia se ha ordenado. El origen de este algoritmo se debe a que cuanto más pequeño sea el elemento lentamente "flotará" en la parte superior de la secuencia a través del intercambio.
El funcionamiento del algoritmo de clasificación de burbujas es el siguiente:
1. Compare elementos adyacentes. Si el primero es más grande que el segundo, intercambie por los dos.
2. Haga el mismo trabajo para cada par de elementos adyacentes, comenzando desde el primer par hasta el último par al final. En este punto, el último elemento debería ser el número más grande.
3. Repita los pasos anteriores para todos los elementos, excepto el último.
4. Continúe repitiendo los pasos anteriores para cada vez menos elementos cada vez hasta que no haya pares de números que necesiten compararse.
Diagrama del proceso de clasificación de burbujas:
Código de ejemplo
public class Bubblesort {public static int [] bubblesort (int [] array) {for (int i = 0; i <array.length; i ++) {for (int j = 0; j <array.length-i-1; j ++) {if (array [j]> array [j+1]) {int temp = array [j]; matriz [j] = array [j+1]; matriz [j+1] = temp; }} System.out.println ("th"+(i+1)+"clasificación"); for (int k = 0; k <array.length; k ++) {system.out.print (array [k]+""); } System.out.println (); } matriz de retorno; } / ** * @param args * / public static void main (string [] args) {int [] array = {7,3,9,5,6,8,1}; Bubblesort (matriz); }}Resultado de impresión:
1st order 3 7 5 6 8 1 9Sorting 2nd order 3 5 6 7 1 8 9Sorting 3 5 6 1 7 8 9Sorting 4th order 3 5 1 6 7 8 9Sorting 5th order 3 1 5 6 7 8 9Sorting 6th order 1 3 5 6 7 8 9Sorting 7th order 1 3 5 6 7 8 9Sorting 7th order 1 3 5 6 7 8 9Sorting 7th order 1 3 5 6 7 8 9Sorting 7th order 1 3 5 6 7 8 9 Storing 7th Order 1 3 5 6 7 8 9 Storeing 5th Order 3 5 6 7 8 9 Sesting 6th Order 1 3 5 6 7 8 9 Sessorto 7th Order 1 3 5 6 7 8 9Ssorting 7th Order 1 3 5 6 7 8 Sesting 5th Order 3 5 6 7 8 9Ssorting Orden 3 5 6 7 8 9 9 Sesto 3 5 6 6 8 9 5 6 órden 9Sting 5th Order 3 5 6 7 8 9 Sorting 5th Order 3 5 6 7 8 9 Sesting 5th Order 3 5 6 7 8 9 Sesting 5th Order 3 5 6 7 8 9 Storing 5th Order 3 5 6 7 8 9 Storing 5th Order 5th Order 5th Order 5th Order 5th Order 5th Order 5th Order 5th Order 5th Order 5th Order 5th Order 5th Order 5th Order 5th Order 5th Order
Búsqueda binaria
Después de clasificar el pedido, también necesitamos encontrar los datos que queremos. La búsqueda dicotómica es un algoritmo básico de uso común, tiempo de sección y básico. La búsqueda binaria es buscar y comparar desde la posición media de los datos clasificados, similar al par medio del palo de madera, por lo que también se llama plegamiento y medias. Es un método de búsqueda más eficiente.
[Requisitos de búsqueda binaria]: 1. Se debe adoptar la estructura de almacenamiento secuencial. 2. La clave debe organizarse de manera ordenada de acuerdo con el tamaño de la palabra clave.
[Pros y desventajas] Las ventajas del método de búsqueda de medios finales son que tiene menos tiempos de comparación, velocidad de búsqueda rápida y buen rendimiento promedio; Su desventaja es que la mesa a buscar es una mesa ordenada y es difícil de insertar y eliminar. Por lo tanto, el método de media búsqueda es adecuado para listas ordenadas que no se cambian con frecuencia y se encuentran con frecuencia.
[Algoritmo pensamiento] Primero, compare las palabras clave registradas en la posición media de la tabla con las palabras clave de búsqueda. Si los dos son iguales, la búsqueda será exitosa; De lo contrario, la tabla se dividirá en dos subales con el registro de posición intermedia. Si las palabras clave registradas en la posición media son mayores que la palabra clave de búsqueda, busque más a fondo la subpeta anterior; de lo contrario, busque más a la siguiente sub-table.
Repita el proceso anterior hasta que se encuentre el registro que cumpla con las condiciones para que la búsqueda sea exitosa, o hasta que la tabla infantil no exista, la búsqueda no tiene éxito en este momento.
[Complejidad del algoritmo] suponiendo que la longitud de la matriz es n, su complejidad de algoritmo es o(log(n)), la peor complejidad del tiempo es O(n)。
Código de ejemplo
paquete com.somnus.array;/** * Método de búsqueda binaria * @author compaq * */public class binarySearch {public static int binarySearch (int [] array, int value) {int low = 0; int high = array.length-1; int middle = 0; while (Low <= High) {Middle = (Low+High)/2; // 0 6 4 6 6 6 For (int i = 0; i <Array.length; i ++) {System.out.print (Array [i]+""); if (i == Middle) // 3 5 6 Imprima el delimitador inmediatamente después del punto medio {System.out.print ("##"); }} System.out.println (); if (array [middle] == value) {return Middle; } if (value <array [middle]) {high = Middle - 1; } if (valor> array [medio]) {Low = Middle + 1; }} return -1; } / ** * @param args * / public static void main (string [] args) {int [] array = {7,3,9,5,6,8,1}; int [] array1 = bubblesort.bubblesort (array); int index = binarySearch (array1,1); System.out.println ("local:"+index); }}Resultado de impresión:
1st order 3 7 5 6 8 1 9Sorting 2nd order 3 5 6 7 1 8 9Sorting 3 5 6 1 7 8 9Sorting 4th order 3 5 1 6 7 8 9Sorting 5th order 3 1 5 6 7 8 9Sorting 6th order 1 3 5 6 7 8 9Sorting 7th order 1 3 5 6 7 8 91 3 5 6 ## 7 8 91 3 ## 5 6 7 8 91 3 ## 5 6 7 8 9 Location:0
Análisis y resumen
En los algoritmos de búsqueda, la dicotomía es la más rápida, pero debe ser una secuencia ordenada. Estos son los cimientos de los algoritmos, y todavía necesitamos hacer mucho esfuerzo para experimentar, resumir, absorber y apegarse al aprendizaje de algoritmos.