miércoles, 28 de octubre de 2015

Tarea 9 - MergeSort y QuickSort

MergeSort en python

def mergeSort(nums):
    print("Separando -> ",nums)
    if len(nums)>1:
        medio = len(nums)//2
        izqmedio = nums[:medio]
        dermedio = nums[medio:]

        mergeSort(izqmedio)
        mergeSort(dermedio)

        i=0
        j=0
        k=0
        while i < len(izqmedio) and j < len(dermedio):
            if izqmedio[i] < dermedio[j]:
                nums[k]=izqmedio[i]
                i=i+1
            else:
                nums[k]=dermedio[j]
                j=j+1
            k=k+1

        while i < len(izqmedio):
            nums[k]=izqmedio[i]
            i=i+1
            k=k+1

        while j < len(dermedio):
            nums[k]=dermedio[j]
            j=j+1
            k=k+1
    print("Combinando -> ",nums)

nums = [34,67,56,2,34,5,6,78,90,9]
print "La lista desordenada es: ",(nums)
mergeSort(nums)


QuickSort en python

def Quicksort(lista,izq,der):
    i=izq
    j=der
    x=lista[(izq + der)/2]
    while( i <= j ):
        while lista[i]<x and j<=der:
            i=i+1
        while x<lista[j] and j>izq:
            j=j-1
        if i<=j:
            aux = lista[i]; lista[i] = lista[j]; lista[j] = aux;
            i=i+1;  j=j-1;
 
        if izq < j:
            Quicksort(lista,izq,j);
    if i < der:
        Quicksort(lista,i,der);
 
def imprimeLista(lista,tam):
    for i in range(0,tam):
        print lista[i]
 
def LeerLista():
    lista=[]
    cn=int(raw_input("Cantidad de numeros a ingresar: "))
    for i in range(0,cn):
        lista.append(int(raw_input("Ingrese numero %d : " % i)))
    return lista
 
A=LeerLista()
Quicksort(A,0,len(A)-1)
imprimeLista(A,len(A))

No hay comentarios:

Publicar un comentario