Vous êtes sur la page 1sur 27

Mtodos de

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

Este algoritmo consiste en lo siguiente:


Buscas el elemento ms pequeo de la lista.
Lo intercambias con el elemento ubicado en la primera posicin
de la lista.
Buscas el segundo elemento ms pequeo de la lista.
Lo intercambias con el elemento que ocupa la segunda posicin
en la lista.
Repites este proceso hasta que hayas ordenado toda la lista.

MMCV

Mtodos Iterativos
Mtodo de Seleccin
Por ejemplo:

Lista a ordenar:

4-3-5-2-1

intercambiamos 1 con el 4 y la lista queda as:


1-3-5-2-4
Lo intercambiamos 2 con el elemento en la segunda posicin, es
decir el 3. La lista queda as:
1-2-5-3-4
intercambiamos 3 con el 5:
1-2-3-5-4
intercambiamos 4 con el 5:
1-2-3-4-5

MMCV

Mtodos Iterativos
Mtodo de Seleccin

public void seleccion ( ){


inti,j,k,p,temp;
for(k=0;k<n;k++){

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

Vous aimerez peut-être aussi