Professional Documents
Culture Documents
class nodo:
izq , der, dato = None, None, 0
class arbolBinario:
def __init__(self):
# inicializa la raiz
self.raiz = None
Selection Sort
def selectionSort(lista):
for fillslot in range(len(lista)-1,0,-1):
positionOfMax=0
for ubicacion in range(1,fillslot+1):
if lista[ubicacion]>lista[positionOfMax]:
positionOfMax = ubicacion
temp = lista[fillslot]
lista[fillslot] = lista[positionOfMax]
lista[positionOfMax] = temp
lista = [1,2,6,5,4,3]
selectionSort(lista)
print(lista)
resultado: [1, 2, 3, 4, 5, 6]
Quick Sort
def quickSort(lista):
quickSortHelper(lista,0,len(lista)-1)
def quickSortHelper(lista,a,z):
if a<z:
splitpoint = partition(lista,a,z)
quickSortHelper(lista,a,splitpoint-1)
quickSortHelper(lista,splitpoint+1,z)
def partition(lista,a,z):
pivotvalue = lista[a]
leftmark = a+1
rightmark = z
done = False
while not done:
temp = lista[a]
lista[a] = lista[rightmark]
lista[rightmark] = temp
return rightmark
lista = [1,2,6,5,4,3]
quickSort(lista)
print(lista)
resultado: [1, 2, 3, 4, 5, 6]
Merge Sort
def mergeSort(lista):
print("Division ",lista)
if len(lista)>1:
mid = len(lista)//2
lefthalf = lista[:mid]
righthalf = lista[mid:]
mergeSort(lefthalf)
mergeSort(righthalf)
i=0
j=0
k=0
while i < len(lefthalf) and j < len(righthalf):
if lefthalf[i] < righthalf[j]:
lista[k]=lefthalf[i]
i=i+1
else:
lista[k]=righthalf[j]
j=j+1
k=k+1
lista = [1,2,6,5,4,3]
mergeSort(lista)
print(lista)
resultado:
Division [1, 2, 6, 5, 4, 3] Division [5]