PHP cuatro algoritmos de clasificación básicos comunes (con ejemplos)

  
1. Análisis de las ideas de clasificación de burbujas: en el conjunto de números a clasificar, compare y ajuste los números adyacentes a las secuencias que aún no están ordenadas, y deje que los números más grandes se hundan. , los más pequeños suben. Es decir, cada vez que se comparan dos números adyacentes y se determina que tienen sus requisitos de ordenación y clasificación invertidos, se intercambian. la implementación del código: $ arr = array (1,43,54,62,21,66,32,78,36,76,39); BubbleSort función ($ matriz) {$ len = count ($ arr); //esto control requiere la capa de bucle rondas de burbujeo for ($ i = 1; $ i < $ len; $ i ++) {//esta capa se utiliza para controlar redondear de salida de bucle un número de veces a ser comparado por ($ k = 0; $ k < $ len- $ i; $ k ++) {if ($ arr [$ k] > $ arr [$ k + 1]) {$ tmp = $ arr [$ k + 1]; $ arr [$ . k + 1] = $ arr [$ k]; $ arr [$ k] = $ tmp;}}} return $ arr;} 2 selección del código de tipo implementa: función SelectSort ($ arr) {//doble bucle se completa, de control exterior el número de rondas, el control interno del número de comparaciones $ len = count ($ arr); for ($ i = 0; $ i < $ lEN-1; $ i ++) {//asumir posiciones $ valor mínimo p = $ i; for ($ j = $ i + 1; $ j < $ len; $ j ++) {//$ arr [$ p] mínimo actualmente conocido if ($ arr [$ p] > $ Arr [$ j]) {//Compare, encuentre más pequeño, registre la posición del mínimo y use el mínimo conocido para comparar en la siguiente comparación. $ p = $ j;}} //La posición del mínimo actual se ha determinado y guardado en $ p. Si se encuentra que la posición del valor mínimo es diferente de la posición asumida actualmente $ i, la posición se puede intercambiar. if ($ p = $ i!) {$ tmp = $ matriz [$ p]; $ matriz [$ p] = $ matriz [$ i]; $ matriz [$ i] = $ tmp;}} //devolver la final resultados devolver $ arr;} 3 ideas de análisis de ordenación por inserción: el número de un grupo para ser ordenada, lo anterior se ha supuesto que el número de orden, el número n está ahora puesta en la parte delantera de números ordenados, de manera que Los n números también están en orden. Este ciclo se repite hasta que todos estén en orden. Código implementa: función insertSort ($ arr) {$ len = count ($ arr); for ($ i = 1, $ i < $ len; $ i ++) {$ tmp = $ arr [$ i]; //interior el control del ciclo, comparar y se inserta por ($ j = $ i-1; $ j > = 0; $ j--) {if ($ tmp < $ arr [$ j]) {//encontrar el elemento de inserción es menor , la posición de cambio, el borde posterior del elemento frontal con elementos intercambiables $ matriz [$ j + 1] = $ arr [$ j]; $ arr [$ j] = $ tmp;} else {//si no se necesita reunió Los elementos móviles, debido a que ya están ordenados, son matrices, por lo que los anteriores no necesitan ser comparados nuevamente. Break;}}} return $ arr;} 4. Análisis de clasificación rápida: seleccione un elemento de referencia, generalmente el primer elemento o el último elemento. A través de un escaneo, la secuencia a clasificar se divide en dos partes, una parte es más pequeña que el elemento de referencia y una parte es mayor o igual que el elemento de referencia. En este punto, el elemento de referencia está en la posición correcta después de que se clasifica, y luego las dos partes de la división se ordenan recursivamente de la misma manera. Código implementa: función de ordenación rápida ($ matriz) {//primero determinar si la necesidad de mantener $ longitud = count ($ arr); if ($ longitud < = 1) {return $ matriz;} //seleccionado como el primer elemento referencia $ base_num = $ arr [0]; //bucle a través de todos los elementos excepto la escala, en las dos matrices //inicializan dos matrices $ left_array = array () de acuerdo con la relación de magnitud; //menos de $ right_array = referencia array (); //es mayor que una referencia para ($ i = 1; $ i < $ longitud; $ i ++) {if ($ base_num > $ arr [$ i]) {//en izquierda array $ left_array [] = $ arr [$ i];} else {//colocado en el derecho $ right_array [] = $ arr [$ i];}} //matriz y luego se dejaron en la derecha de la misma proceso de clasificación llama recursivamente esta función $ left_array = página_web ($ left_array); $ right_array = página_web ($ right_array); //retorno array_merge combinado ($ left_array, array ($ base_num), $ right_array);} [desde el sistema principal] www.xp85. Com
Copyright © Conocimiento de Windows All Rights Reserved