Orden de inserción de algoritmo (implementado por código PHP)

Introducción

Aunque la implementación del código de la ordenación por inserción no es tan simple y tosca como la ordenación por burbujas y la ordenación por selección, su principio debería ser el más fácil de entender, porque cualquiera que haya jugado al póquer debería poder entenderlo en segundos. La ordenación por inserción es el algoritmo de ordenación más simple e intuitivo. Su principio de funcionamiento es construir una secuencia ordenada. Para datos no clasificados, escanee de atrás hacia adelante en la secuencia ordenada para encontrar la posición correspondiente e insértela.

La ordenación por inserción, como la ordenación por burbujas, también tiene un algoritmo de optimización llamado inserción por la mitad dividida.

1. Pasos del algoritmo
El primer elemento de la primera secuencia que se va a clasificar se considera una secuencia ordenada, y el segundo elemento hasta el último elemento se considera una secuencia sin clasificar.

Escanee la secuencia sin clasificar de principio a fin, inserte cada elemento escaneado en la posición correcta de la secuencia ordenada. (Si el elemento a insertar es igual a un elemento en la secuencia ordenada, el elemento a insertar se inserta después del elemento igual).

2. Demostración de animación
Inserte la descripción de la imagen aquí

Implementación de código PHP

    /**
     * 插入排序
     * @param $arr
     * @return mixed
     */
    public function insertSort($arr)
    {
    
    
        $length = count($arr);

        for ($i=1;$i<$length;$i++) {
    
    
            $temp = $arr[$i]; //待比较元素(开始第一次选的肯定是数组的第二个元素)
            for ($j=$i-1;$j>=0;$j--) {
    
     //已排好序的数组循环和待比较元素作对比 (开始第一次已排好序的数组就是原数组第一个元素)
                if ($temp<$arr[$j]) {
    
     //如果待比较元素小则放左边
                    $arr[$j+1] = $arr[$j];
                    $arr[$j] = $temp;
                } else {
    
     //如果待比较元素大则不处理
                    break;
                }
            }
        }

        return $arr;
    }
    

Dirección del artículo de referencia:

https://www.runoob.com/w3cnote/insertion-sort.html

Supongo que te gusta

Origin blog.csdn.net/magentodaddy/article/details/108619421
Recomendado
Clasificación