Insertar clasificación: implementación de Python

Introducción al método de clasificación por inserción:

La ordenación de complementos pertenece al método de ordenación interno, que consiste en encontrar la posición adecuada del elemento a ordenar para lograr el propósito de la ordenación.

Insertar idea de clasificación:

La idea básica de la ordenación por inserción es tratar n elementos que se ordenarán como una lista ordenada y una lista desordenada. Al principio, la lista ordenada contiene solo un elemento y la lista desordenada contiene n-1 Elementos, cada vez que se toma el primer elemento de la lista desordenada durante el proceso de clasificación, su código de clasificación se compara secuencialmente con el código de clasificación de los elementos de la lista ordenada, y se inserta en la posición apropiada en la lista ordenada para hacerlo Conviértete en una nueva lista ordenada.

Insertar diagrama de clasificación:

Inserte la descripción de la imagen aquí

Realización concreta

Después de leer la introducción anterior, creo que tiene una comprensión preliminar de la clasificación por inserción. En nuestras palabras, es casi lo mismo que la clasificación por naipes. Primero, debe asumir la primera posición como la posición de inserción. En segundo lugar, debe comparar el número en la segunda posición con el primer número. Si es menor que el primer número, encontrará la posición de inserción y realizará la operación de inserción.

import time
import random

arr = [0 for i in range(8000)]
for i in range(8000):
    arr[i]=random.randint(0,8000)

#arr=[101,34,119,1]
print(arr)
def InsertSort(arr):
    
    insertValue=0
    insertIndex=0
    for j in range(1,len(arr)):
        #No1定义待插入的的数的下标和值
        insertValue = arr[j] #变量定义不要循环内部
        insertIndex = j-1
        
        #No2寻找插入的位置
        while insertIndex>=0 and insertValue < arr[insertIndex]:
            #左移insertIndex
            arr[insertIndex+1] = arr[insertIndex]#前面的数字后移
            insertIndex -= 1#插入下标左移
        #No3
        if insertIndex + 1 != j:
            arr[insertIndex+1] = insertValue

print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()))
InsertSort(arr)
print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()))
print(arr)
        

Resultado de la operación
Inserte la descripción de la imagen aquí
Si la cantidad de datos llega a 8000, la clasificación tarda 5 segundos. Si lee mis otros blogs de clasificación, encontrará que la clasificación por inserción es relativamente eficiente. Pero, de hecho, ordenó complejidad del tiempo es O (n ^ 2), que es el peor de los casos, pero el número de palabras clave y comparando el número de objetos que se mueven en el caso en el que un promedio de alrededor de n- 2 /. 4. Por lo tanto, se necesita un tiempo más corto.

27 artículos originales publicados · elogiados 2 · visitas 680

Supongo que te gusta

Origin blog.csdn.net/qq_44273739/article/details/105208000
Recomendado
Clasificación