associação pythonbrasil[11] django zope/plone planet Início Logado como (Entrar)

Diferenças para "QuickSort"

Diferenças entre as versões de 3 e 4
Revisão 3e 2004-09-18 22:00:41
Tamanho: 1221
Editor: 200
Comentário:
Revisão 4e 2004-09-18 22:11:44
Tamanho: 1396
Editor: 200
Comentário:
Deleções são marcadas assim. Adições são marcadas assim.
Linha 3: Linha 3:
Script de ordenação rádida, inventado por C.A.R. Hoare. O algoritmo gasta o tempo proporcional a n log(n) em média e a n² no pior caso. Script de ordenação rádida, inventado por C.A.R. Hoare. O algoritmo gasta o tempo proporcional a n log(n) em média e a n² no pior caso. O código abaixo foi extraído de http://www.hetland.org/python/quicksort.html e foi escrito por Magnus Lie Hetland e os comentários foram removidos.
Linha 10: Linha 10:
    last value
Linha 14: Linha 13:
    done = 0     done = 0          
Linha 18: Linha 17:
            bottom = bottom+1             bottom = bottom + 1
Linha 59: Linha 58:

----

Magnus Lie Hetland

Quicksort

Script de ordenação rádida, inventado por C.A.R. Hoare. O algoritmo gasta o tempo proporcional a n log(n) em média e a n² no pior caso. O código abaixo foi extraído de http://www.hetland.org/python/quicksort.html e foi escrito por Magnus Lie Hetland e os comentários foram removidos.

 def partition(list, start, end):
    pivot = list[end]
    bottom = start-1
    top = end

    done = 0          
    while not done:

        while not done:
            bottom = bottom + 1

            if bottom == top:
                done = 1
                break

            if list[bottom] > pivot:
                list[top] = list[bottom]
                break

        while not done:
            top = top-1

            if top == bottom:
                done = 1
                break

            if list[top] < pivot:
                list[bottom] = list[top]
                break

    list[top] = pivot
    return top

 def quicksort(list, start, end):
   if start < end:
        split = partition(list, start, end)
        quicksort(list, start, split-1)
        quicksort(list, split+1, end)
   else:
        return

 if __name__=="__main__":
    import sys
    list = map(int,sys.argv[1:])
    start = 0
    end = len(list)-1
    quicksort(list,start,end)
    import string
    print string.join(map(str,list))


Magnus Lie Hetland