Invierte en tu educación con el precio especial

Antes:$249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

11d

16h

36m

36s

1

Merge Sort combinado con Insertion Sort

Un algoritmo muy usado en ordenamiento es el merge sort como vimos en la clase de este curso. En la práctica ese método se combina con el insertion sort porque el insertion sort aunque es ineficiente con listas grandes es muy eficiente con listas pequeñas por ejemplo de 10 elementos.

Este código combina los dos algoritmos que vimos en clase. El punto donde se combinan es aquí

if n <= INSERT_SORT_THRESHOLD:
        return insert_sort(list)

la variable INSERT_SORT_THRESHOLD indica cuantos elementos debe tener la lista para iniciar un insertion sort. Un valor de cero indica que siempre usar merge sort

INSERT_SORT_THRESHOLD = 10

def insert_sort(list):
    n = len(list)
    ifn == 0:
        returnlistfor i inrange(1, n):        
        itm = list[i]
        index = i
        #move from i-1 to 0                
        for j inrange(i - 1, -1, -1):
            if itm < list[j] :
                index = jlist[j+1] = list[j]
            else:
                breaklist[index] = itm        
    returnlist

def merge_sort(list):
    n = len(list)
    ifn <= 1:
        returnlistifn <= INSERT_SORT_THRESHOLD:
        return insert_sort(list)

    middle = n// 2
    left = merge_sort(list[:middle])
    right = merge_sort(list[middle:])

    left_c = 0
    right_c = 0
    k = 0

    while left_c < len(left) and right_c < len(right):
        if left[left_c] < right[right_c]:
            list[k] = left[left_c]
            left_c += 1
        else:
            list[k] = right[right_c]
            right_c += 1
        k += 1

    while left_c < len(left):
        list[k] = left[left_c]
        k += 1
    
    while right_c < len(right):
        list[k] = right[right_c]
        k += 1

    returnlist

import random
random_list = [random.randint(0, 1000) for x inrange(0, 20)]
print(random_list)
print('-' * 20)
print(insert_sort(random_list))
Escribe tu comentario
+ 2