Académique Documents
Professionnel Documents
Culture Documents
Ordenamiento
TS - III
MMCV
Mtodos de Ordenamiento
Mtodos Recursivos:
Mezcla (MergeSort)
QuickSort
MMCV
Mtodos Recursivos
Mtodo de MergeSort
Se aplica la tcnica divide y vencers, dividiendo la
secuencia de datos en dos sublistas hasta que las
sublistas tengan un nico elemento, luego se ordenan
mezclando dos sublistas ordenadas en una lista
ordenada, en forma sucesiva hasta obtener una
secuencia nica ya ordenada.
Si n = 1 solo hay un elemento por ordenar, sino se hace
una ordenacin de mezcla de la primera mitad del
arreglo con la segunda mitad. Las dos mitades se
ordenan de igual forma.
MMCV
Mtodos Recursivos
Mtodo de MergeSort: Ejemplo de simulacin
MMCV
Mtodos Recursivos
Mtodo de MergeSort:
MMCV
Mtodos Recursivos
MMCV
Mtodos Recursivos
Mtodo de QuickSort
El mtodo se basa en dividir los n elementos de la lista a ordenar
en dos partes o particiones separadas por un elemento
Una particin izquierda, un elemento central denominado pivote o
elemento de particin, y una particin derecha.
La particin se hace de tal forma que todos los elementos de la
primera sublista (particin izquierda) son menores que todos los
elementos de la segunda sublista (particin derecha).
Las dos sublistas se ordenan entonces independientemente.
MMCV
Mtodos Recursivos
Mtodo de QuickSort
MMCV
Mtodos Recursivos
Mtodo de QuickSort
MMCV
Mtodos Iterativos
Mtodos Iterativos:
Burbuja
o Simple
o Mejorada
Insercin
Seleccin
MMCV
Mtodos Iterativos
Burbuja Simple:
Este mtodo es uno de los mas simples, es tan fcil
como comparar todos los elementos de una lista contra
todos, si se cumple que uno es mayor o menor a otro,
entonces los intercambia de posicin.
MMCV
Mtodos Iterativos
Ejemplo:
ESTRATEGIA
Comparamos todos contra todos, aun estemos
generando comparaciones extras.
MMCV
Mtodos Iterativos
Ejemplo:
Paso 1
para i = 1
j=0
j=1
j=2
j=3
MMCV
Mtodos Iterativos
Ejemplo:
Paso 2
para i = 2
0
j=0
j=1
j=2
j=3
MMCV
Mtodos Iterativos
Ejemplo:
Paso 3
para i = 3
0
j=0
j=1
j=2
j=3
MMCV
Mtodos Iterativos
Mtodo burbujaS
public void burbujaS ( ){
int temp;
for (int i=1; i<n; i++){
for (int j=0; j<n-1; j++){
if (A[j] > A[j+1]){
temp = A[j];
A[j] = A[j+1];
A[j+1] = temp;
}
}
}
}
MMCV
Mtodos Iterativos
Mtodo burbujaM
public void burbujaM ( ){
int temp;
for (int i=0; i<n-1; i++){
for (int j=i+1; j<n; j++){
if (A[i] > A[j]){
temp = A[i];
A[i] = A[j];
A[j] = temp;
}
}
}
}
MMCV
Mtodos Iterativos
Mtodo de Seleccin
MMCV
Mtodos Iterativos
Mtodo de Seleccin
Por ejemplo:
Lista a ordenar:
4-3-5-2-1
MMCV
Mtodos Iterativos
Mtodo de Seleccin
p=k;
for(i=k+1;i<n;i++){
if(A[i]<A[p])p=i;
}
if(p!=k){
temp=A[p];
A[p]=A[k];
A[k]=temp;
}
}
}
MMCV
Mtodos Iterativos
Mtodo de Insercin
Consideremos que en un momento dado, el segmento izquierdo del
arreglo est ordenado y el segmento derecho no.
Podemos tomar un elemento del segmento derecho e insertarlo en
su lugar correcto en el lado izquierdo.
MMCV
Mtodos Iterativos
Mtodo de Insercin
Se considera la lista partida en dos sublistas, una ordenada y la
otra para ordenar
En el primer paso, la lista ordenada contiene un elemento y la
lista por ordenar, n-1,
Se van extrayendo uno a uno los elementos de la lista
desordenada y se colocan en la sublista ordenada, mediante
comparaciones sucesivas, hasta encontrar la posicin correcta,
El proceso contina hasta que la lista desordenada queda vaca.
MMCV
Mtodos Iterativos
Mtodo de Insercin
Ejemplo:
MMCV
Mtodos Iterativos
Mtodo de Insercin
public void insercion ( ){
for (int i=1; i < n; i++) {
int aux = A[i];
int j;
for (j=i-1; j > =0 && A[j] > aux; j--){
A[j+1] = A[j];
}
A[j+1] = aux;
}
}
MMCV
Ejercicio de Aplicacin
Disee una clase llamada Estudiante, con los siguientes atributos: cdigo,
nombre, cdigo de curso y nota final del curso.
Un constructor con parmetros
Mtodos getters y setters.
Mtodo redefinido toString()
Disee la clase GestionEstudiante, con atributos: un arreglo esttico de
tipo Estudiante de tamao mximo 50, y una variable para cantidad de
estudiantes.
Un constructor sin parmetros.
MMCV
Ejercicio de Aplicacin
Disee los siguientes mtodos:
a) Que agregue al final del arreglo un objeto Estudiante pasado como
parmetro. Debe verificar si existe espacio disponible. Considere que el
cdigo del estudiante se puede repetir; es decir un estudiante puede
llevar varios cursos.
b) Use el mtodo de ordenamiento de Quicksort y ordene la informacin
respecto del cdigo del estudiante de mayor a menor y retornelo. (La
informacin original no debe sufrir cambios).
c) Use el mtodo de ordenamiento de seleccin y ordene respecto al
nombre del estudiante y retornelo. (la informacin original no debe sufrir
cambios).
d) Mtodo redefinido toString() que retorne la informacin del nombre del
estudiante, cdigo del curso y su promedio ponderado (es decir, el
promedio de notas de todos los cursos que llevo).
MMCV
Ejercicio de Aplicacin
Disee la clase Prueba y simule el ingreso de 10 datos de estudiantes.
Estudiante
GestionEstudiante
-listaE: Estudiante[50]
-n: int
1..*
-cod: int
-nombre: String
-codCurso: int
-notaFinalCurso: int
MMCV