Busqueda y Ordenacion Con Python
Busqueda y Ordenacion Con Python
Busqueda y Ordenacion Con Python
ordenación
Matías Bordone - 2020
CC-By international 4.0
La búsqueda
Ejemplo
l = [a,b,c,d,e,f,g] -> existe “el siguiente de”
preguntar si x esta en l
para cada e en l:
pregunto x == e:
return true
return false
La búsqueda secuencial
Testear el código con diferentes
def busquedaSecuencial(unaLista, item): valores hasta que entiendan como
if unaLista==[]: funciona.
return False
http://pythontutor.com/visualize.html
else: #mode=edit
return ((unaLista[0] == item) or
busquedaSecuencial(unaLista[1:],item))
...
Ordenamiento por selección
def ordenamientoPorSeleccion(lista):
for i_ultimo in range(len(lista)-1,0,-1):
i_mayor=0
for i in range(1,i_ultimo+1):
if lista[i]>lista[i_mayor]:
i_mayor = i
temp = lista[i_ultimo]
lista[i_ultimo] = lista[i_mayor]
lista[i_mayor] = temp
lista = [5,1,8]
ordenamientoPorSeleccion(lista)
print(lista)
Ordenamiento
por inserción
Ordenamiento por inserción
agarro el 1° y lo pongo en su lugar en la sublista de la izquierda
valorActual = unaLista[indice]
posicion = indice
unaLista[posicion]=valorActual
unaLista = [54,26,93,17,77,31,44,55,20]
ordenamientoPorInsercion(unaLista)
print(unaLista)
Insertar por recursion
Recursión sobre listas: Inserción ordenada
def ordenamientoRapidoAuxiliar(unaLista,primero,ultimo):
if primero<ultimo:
puntoDivision = particion(unaLista,primero,ultimo)
ordenamientoRapidoAuxiliar(unaLista,primero,puntoDivision-1)
ordenamientoRapidoAuxiliar(unaLista,puntoDivision+1,ultimo)
def particion(unaLista,primero,ultimo):
valorPivote = unaLista[primero]
marcaIzq = primero+1
marcaDer = ultimo
hecho = False
while not hecho:
while marcaIzq <= marcaDer and unaLista[marcaIzq] <= valorPivote:
marcaIzq = marcaIzq + 1
while unaLista[marcaDer] >= valorPivote and marcaDer >= marcaIzq:
marcaDer = marcaDer -1
if marcaDer < marcaIzq:
hecho = True
else:
temp = unaLista[marcaIzq]
unaLista[marcaIzq] = unaLista[marcaDer]
unaLista[marcaDer] = temp
temp = unaLista[primero]
unaLista[primero] = unaLista[marcaDer]
unaLista[marcaDer] = temp
return marcaDer
Velocidad del ordenamiento
ordenamiento por seleccion n^2 para 9 elementos hacemos 81 comparaciones