예제 #1
0
def QuickSortTipo(Lista, li, lf):
    pila = PD.PilaD()
    PD.crearpilaD(pila)
    PD.apilar(pila, [li, lf])
    while (not PD.pilavacia(pila)):
        x = PD.desapilar(pila)
        li, lf = x[0], x[1]
        pivot = lf
        i = li
        j = lf - 1
        while (i <= j):
            while (Lista[i].tipo < Lista[pivot].tipo):
                i = i + 1
            while Lista[j].tipo > Lista[pivot].tipo:
                j = j - 1
            if (i <= j):
                aux = Lista[i]
                Lista[i] = Lista[j]
                Lista[j] = aux
                i = i + 1
                j = j - 1
        aux = Lista[i]
        Lista[i] = Lista[lf]
        Lista[lf] = aux
        if (i < lf):
            PD.apilar(pila, [(i), lf])
        if (j > li):
            PD.apilar(pila, [li, (j)])
예제 #2
0
def QuickSortStock(Lista, li, lf):
    pila = PD.PilaD()
    PD.crearpilaD(pila)
    PD.apilar(pila, [li, lf])
    while (not PD.pilavacia(pila)):
        x = PD.desapilar(pila)
        li, lf = x[0], x[1]
        pivot = lf
        i = li
        j = lf - 1
        while (i <= j):
            while (float(Lista[i].stock) < float(Lista[pivot].stock)):
                i = i + 1
            while float(Lista[j].stock) > float(Lista[pivot].stock):
                j = j - 1
            if (i <= j):
                aux = Lista[i]
                Lista[i] = Lista[j]
                Lista[j] = aux
                i = i + 1
                j = j - 1
        aux = Lista[i]
        Lista[i] = Lista[lf]
        Lista[lf] = aux
        if (i < lf):
            PD.apilar(pila, [(i), lf])
        if (j > li):
            PD.apilar(pila, [li, (j)])