Link Search Menu Expand Document

Análisis de Algoritmos de Ordenamiento

Burbuja

# Bubblesort
# Entrada: Una lista de enteros de longitud n
# Salida: La lista anterior ordenada menor a mayor
def bubblesort(lista):
    n = 0
    lista = lista.copy()
    for i in range(len(lista)):
        for j in range(len(lista) - 1):
            if lista[j] > lista[j+1]:
                aux = lista[j]
                lista[j] = lista[j+1]
                lista[j+1] = aux
            n += 1
    return n, lista

Quicksort

def particiona_y_gana(l, inicio, fin):
    n=0
    if fin - inicio < 1: return n
    p = l[inicio]
    i = inicio
    j = fin
    while i < j:
        if l[i+1] > p:
          swap(l, i+1, j)
          j = j - 1
        else:
          i = i + 1
        n += 1
    swap(l, inicio, j)
    n += particiona_y_gana(l,inicio,j-1)
    n += particiona_y_gana(l,j+1,fin)
    return n

def quicksort(lista):
    l = lista.copy()
    n = particiona_y_gana(l, 0, len(l)-1)
    return n,l