Inserir classificação - implementação em Python

Introdução ao método de classificação por inserção:

A classificação de plug-in pertence ao método de classificação interno, que consiste em encontrar a posição apropriada do elemento a ser classificado, a fim de atingir o objetivo de classificação.

Inserir ideia de ordenação:

A idéia básica da Classificação por inserção é tratar n elementos a serem classificados como uma lista ordenada e uma lista não ordenada.No início, a lista ordenada contém apenas um elemento e a lista não ordenada contém n-1 Elementos, cada vez que o primeiro elemento é retirado da lista não ordenada durante o processo de classificação, seu código de classificação é comparado sequencialmente com o código de classificação dos elementos da lista ordenada e é inserido na posição apropriada na lista ordenada. Torne-se uma nova lista ordenada.

Inserir diagrama de classificação:

Insira a descrição da imagem aqui

Realização de concreto

Depois de ler a introdução anterior, acredito que você tenha um entendimento preliminar da classificação por inserção.Em nossas palavras, é quase o mesmo que a classificação por cartas de jogar. Primeiro, você precisa assumir a primeira posição como a posição de inserção. Em segundo lugar, você precisa comparar o número na segunda posição com o primeiro número.Se for menor que o primeiro número, você encontrará a posição de inserção e executará a operação de inserção.

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 da operação
Insira a descrição da imagem aqui
Se a quantidade de dados atingir 8000, a classificação levará 5 segundos. Se você ler meus outros blogs de classificação, descobrirá que a classificação por inserção é relativamente eficiente. Mas na verdade ele ordenou complexidade de tempo é O (n ^ 2), que é o pior caso, mas o número de palavras-chave e comparando o número de objectos em movimento, no caso em que uma média de cerca de n- 2 /. 4. Portanto, é preciso um tempo mais curto.

Publicado 27 artigos originais · elogiado 2 · visitas 680

Acho que você gosta

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