Clase 6 Metodos de
Ordenamiento
Temario- Ordenamiento por Seleccin- Merge Sort- Quick Sort
Este es el algoritmo mas sencillo Para ordenar un vector de n elementos L = [a1, , an] busca el elemento menor y lo ubica al comienzo Para mantener la dimensin del vector se intercambia con el primero de la listaa continuacin y sabiendo que el primero es el menor, se busca el segundo elemento a partir de a2 y se intercambia con este.
Ordenamiento por Seleccin
Cdigo por Seleccindef buscarMenor(L):
menor = 1000for x in L:
if x < menor :menor = x
return menor
def ordenamiento_seleccion(L):for x in range(0, len(L)):
sublista = L[x:]menor = buscarMenor(sublista)indice = sublista.index(menor)L[indice+x] = L[x]L[x] = menor
Dividir el problema en k subproblemas del mismo tipo, pero de tamao menor.
Vencer es resolver independientemente todos los subproblemas, bien directamente si son elementales o bien de forma recursiva.
Combinar las soluciones de los subproblemas para obtener la solucin del problema original.
Antes de seguir ..Divide y vencers
Dividir: Dividir la sucesin de n elementos en dos subsucesiones de aproximadamente n/2 elementos cada una de ellas, k = 2.
Vencer: Ordenar las dos subsucesiones recursivamente. Combinar: Mezclar las dos subsucesiones ordenadas y obtener la salida.
Ordenar Mezclando Merge Sort
Elegimos el elemento menor entre los ltimos de cada lista;
lo quitamos de esa lista y lo ponemos en una nueva lista;
repetimos este procedimiento hasta que no haya elementos en alguna de las listas;
entonces slo tenemos que agarrar el resto de los elementos de la otra lista y ponerlos en la lista final
Y como mezclamos? Dos listas..
Ahora s... cdigo Merge Sort
def ordenar_mezclando(L): if len(L) < 2: return L else: mitad= len(L)/2 izquierda=ordenar_mezclando(L[:mitad]) derecha=ordenar_mezclando(L[mitad:]) return mezclando(izquierda,derecha)
Es otra forma de ordenar recursiva utilizando la tcnica de divide y venceras
Toma un numero random (generalmente la mitad de la lista)
ubica todos los menores de ese numero en una lista y los mayores en otra lista
Vuelve a llamar a quick sort con el elemento pivot en el medio suponiendo que esta ordenado
Quick Sort
Cdigo - Quick Sortdef QuickSort(List): if List == [] or len(List) == 1: return List else : pivotPos = randint(0,len(List)-1) pivot = List[pivotPos] greater = [] lesser = [] for i in range(0,len(List)): if List[i] < pivot and i != pivotPos : lesser.append(List[i]) else : if i != pivotPos : greater.append(List[i]) return QuickSort(lesser) + [pivot] + QuickSort(greater)
Fin - Preguntas
Pgina 1Example Bullet Point slidePgina 3Pgina 4Pgina 5Pgina 6Pgina 7Pgina 8Pgina 9Pgina 10Pgina 11Pgina 12