Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Métodos de Ordenamiento
Ing. Aníbal Sardón Paniagua
C16290@utp.edu.pe
anibal.sardon@hotmail.com
Logros de Aprendizaje
Datos
originales 1ª iter. 2ª 3ª 4ª
36 6 6 6 6
24 36 10 10 10
10 24 36 12 12
6 10 24 36 24
12 12 12 24 36
9
Algoritmo de la Burbuja: Bubble Sort
Datos
originales 1ª iter. 2ª 3ª 4ª
36 6 6 6 6
24 36 10 10 10
10 24 36 12 12
6 10 24 36 24
12 12 12 24 36
10
Algoritmo de la Burbuja: Bubble Sort
Datos
originales 1ª iter. 2ª 3ª 4ª
36 6 6 6 6
24 36 10 10 10
10 24 36 12 12
6 10 24 36 24
12 12 12 24 36
11
Algoritmo de la Burbuja: Bubble Sort
Datos
originales 1ª iter. 2ª 3ª 4ª
36 6 6 6 6
24 36 10 10 10
10 24 36 12 12
6 10 24 36 24
12 12 12 24 36
12
Algoritmo de la Burbuja: Bubble Sort
Datos
originales 1ª iter. 2ª 3ª 4ª
36 6 6 6 6
24 36 10 10 10
10 24 36 12 12
6 10 24 36 24
12 12 12 24 36
13
Algoritmo de la Burbuja: Bubble Sort
for(i=n;i>0;i--)
for(j=0;j<i-1;j++)
if (a[j] > a[j+1])
{
t=a[j];
a[j] = a[j+1];
a[j+1]=t;
}
14
Algoritmo de la Burbuja: Bubble Sort
Array
original: 44 55 12 42 94 18 06 67
i=2 44 55 12 42 94 18 06 67
i=3 12 44 55 42 94 18 06 67
i=4 12 42 44 55 94 18 06 67
i=5 12 42 44 55 94 18 06 67
i=6 12 18 42 44 55 94 06 67
i=7 06 12 18 42 44 55 94 67
i=8 06 12 18 42 44 55 67 94
20
Algoritmo de Inserción: Insertion Sort
Array
original: 44 55 12 42 94 18 06 67
i=2 44 55 12 42 94 18 06 67
i=3 12 44 55 42 94 18 06 67
i=4 12 42 44 55 94 18 06 67
i=5 12 42 44 55 94 18 06 67
i=6 12 18 42 44 55 94 06 67
i=7 06 12 18 42 44 55 94 67
i=8 06 12 18 42 44 55 67 94
21
Algoritmo de Inserción: Insertion Sort
Array
original: 44 55 12 42 94 18 06 67
i=2 44 55 12 42 94 18 06 67
i=3 12 44 55 42 94 18 06 67
i=4 12 42 44 55 94 18 06 67
i=5 12 42 44 55 94 18 06 67
i=6 12 18 42 44 55 94 06 67
i=7 06 12 18 42 44 55 94 67
i=8 06 12 18 42 44 55 67 94
22
Algoritmo de Inserción: Insertion Sort
Array
original: 44 55 12 42 94 18 06 67
i=2 44 55 12 42 94 18 06 67
i=3 12 44 55 42 94 18 06 67
i=4 12 42 44 55 94 18 06 67
i=5 12 42 44 55 94 18 06 67
i=6 12 18 42 44 55 94 06 67
i=7 06 12 18 42 44 55 94 67
i=8 06 12 18 42 44 55 67 94
23
Algoritmo de Inserción: Insertion Sort
Array
original: 44 55 12 42 94 18 06 67
i=2 44 55 12 42 94 18 06 67
i=3 12 44 55 42 94 18 06 67
i=4 12 42 44 55 94 18 06 67
i=5 12 42 44 55 94 18 06 67
i=6 12 18 42 44 55 94 06 67
i=7 06 12 18 42 44 55 94 67
i=8 06 12 18 42 44 55 67 94
24
Algoritmo de Inserción: Insertion Sort
Array
original: 44 55 12 42 94 18 06 67
i=2 44 55 12 42 94 18 06 67
i=3 12 44 55 42 94 18 06 67
i=4 12 42 44 55 94 18 06 67
i=5 12 42 44 55 94 18 06 67
i=6 12 18 42 44 55 94 06 67
i=7 06 12 18 42 44 55 94 67
i=8 06 12 18 42 44 55 67 94
25
Algoritmo de Inserción: Insertion Sort
Array
original: 44 55 12 42 94 18 06 67
i=2 44 55 12 42 94 18 06 67
i=3 12 44 55 42 94 18 06 67
i=4 12 42 44 55 94 18 06 67
i=5 12 42 44 55 94 18 06 67
i=6 12 18 42 44 55 94 06 67
i=7 06 12 18 42 44 55 94 67
i=8 06 12 18 42 44 55 67 94
26
Algoritmo de Inserción: Insertion Sort
Array
original: 44 55 12 42 94 18 06 67
i=2 44 55 12 42 94 18 06 67
i=3 12 44 55 42 94 18 06 67
i=4 12 42 44 55 94 18 06 67
i=5 12 42 44 55 94 18 06 67
i=6 12 18 42 44 55 94 06 67
i=7 06 12 18 42 44 55 94 67
i=8 06 12 18 42 44 55 67 94
27
Algoritmo de Inserción: Insertion Sort
for(i=1;i<n;i++)
{
j=i-1;
t=a[i];
while (j>=0 && t<a[j])
{
a[j+1] = a[j];
j=j-1;
}
a[j+1]=t;
}
28
Algoritmo de Inserción: Insertion Sort
1 funcion Insercion(V: vector de natural; n:natural) devuelve vector de natural
2 variable i,j : natural ;
3 V[0] ← MIN_INT;
4 para i ← 2 hasta n hacer
5 j ← i;
6 mientras (V[j] < V[j-1]) hacer
7 Intercambiar(V, j, j-1);
8 j ← j-1;
9 fmientras
10 fpara
11 devuelve V;
12 ffuncion
36
Algoritmo de Selección: Selection Sort
Array
original: 44 55 12 42 94 18 06 67
i=2 06 55 12 42 94 18 44 67
i=3 06 12 55 42 94 18 44 67
i=4 06 12 18 42 94 55 44 67
i=5 06 12 18 42 94 55 44 67
i=6 06 12 18 42 44 55 94 67
i=7 06 12 18 42 44 55 94 67
i=8 06 12 18 42 44 55 67 94
37
Algoritmo de Selección: Selection Sort
Array
original: 44 55 12 42 94 18 06 67
i=2 06 55 12 42 94 18 44 67
i=3 06 12 55 42 94 18 44 67
i=4 06 12 18 42 94 55 44 67
i=5 06 12 18 42 94 55 44 67
i=6 06 12 18 42 44 55 94 67
i=7 06 12 18 42 44 55 94 67
i=8 06 12 18 42 44 55 67 94
38
Algoritmo de Selección: Selection Sort
Array
original: 44 55 12 42 94 18 06 67
i=2 06 55 12 42 94 18 44 67
i=3 06 12 55 42 94 18 44 67
i=4 06 12 18 42 94 55 44 67
i=5 06 12 18 42 94 55 44 67
i=6 06 12 18 42 44 55 94 67
i=7 06 12 18 42 44 55 94 67
i=8 06 12 18 42 44 55 67 94
39
Algoritmo de Selección: Selection Sort
Array
original: 44 55 12 42 94 18 06 67
i=2 06 55 12 42 94 18 44 67
i=3 06 12 55 42 94 18 44 67
i=4 06 12 18 42 94 55 44 67
i=5 06 12 18 42 94 55 44 67
i=6 06 12 18 42 44 55 94 67
i=7 06 12 18 42 44 55 94 67
i=8 06 12 18 42 44 55 67 94
40
Algoritmo de Selección: Selection Sort
Array
original: 44 55 12 42 94 18 06 67
i=2 06 55 12 42 94 18 44 67
i=3 06 12 55 42 94 18 44 67
i=4 06 12 18 42 94 55 44 67
i=5 06 12 18 42 94 55 44 67
i=6 06 12 18 42 44 55 94 67
i=7 06 12 18 42 44 55 94 67
i=8 06 12 18 42 44 55 67 94
41
Algoritmo de Selección: Selection Sort
Array
original: 44 55 12 42 94 18 06 67
i=2 06 55 12 42 94 18 44 67
i=3 06 12 55 42 94 18 44 67
i=4 06 12 18 42 94 55 44 67
i=5 06 12 18 42 94 55 44 67
i=6 06 12 18 42 44 55 94 67
i=7 06 12 18 42 44 55 94 67
i=8 06 12 18 42 44 55 67 94
42
Algoritmo de Selección: Selection Sort
Array
original: 44 55 12 42 94 18 06 67
i=2 06 55 12 42 94 18 44 67
i=3 06 12 55 42 94 18 44 67
i=4 06 12 18 42 94 55 44 67
i=5 06 12 18 42 94 55 44 67
i=6 06 12 18 42 44 55 94 67
i=7 06 12 18 42 44 55 94 67
i=8 06 12 18 42 44 55 67 94
43
Algoritmo de Selección: Selection Sort
Array
original: 44 55 12 42 94 18 06 67
i=2 06 55 12 42 94 18 44 67
i=3 06 12 55 42 94 18 44 67
i=4 06 12 18 42 94 55 44 67
i=5 06 12 18 42 94 55 44 67
i=6 06 12 18 42 44 55 94 67
i=7 06 12 18 42 44 55 94 67
i=8 06 12 18 42 44 55 67 94
44
Algoritmo de Selección: Selection Sort
for(i=0;i<n-1;i++)
{
k=i;
t=a[i];
for (j=i+1; j<n; j++)
{
if (a[j] < t)
{
t= a[j];
k=j;
}
a[k]= a[i];
a[i]= t;
}
}
45
Preguntas
Manos a la Obra, a programar ….
Quick Sort
Algoritmo QuickSort
• El ordenamiento rápido (quicksort) es un algoritmo de ordenación creado
por el científico británico en computación Charles Antony Richard Hoare.
• Basado en la técnica de divide y vencerás. Conocido como método rápido
y de ordenamiento por partición.
• El algoritmo trabaja de la siguiente forma:
1. Se elige un elemento v de la lista L de elementos al que se le llama pivote.
2. Se particiona la lista L en tres listas:
a) L1 - que contiene todos los elementos de L menos v que sean menores o
iguales que v
b) L2 - que contiene a v
c) L3 - que contiene todos los elementos de L menos v que sean mayores o
iguales que v
3. Se aplica la recursión sobre L1 y L3
4. Se unen todas las soluciones que darán forma final a la lista L finalmente ordenada.
Como L1 y L3 están ya ordenados, lo único que tenemos que hacer es concatenar
L1, L2 y L3
Algoritmo QuickSort
• Ejemplo:
Algoritmo QuickSort
• Ejemplo:
Preguntas
Manos a la Obra, a programar ….
Resumen
1. La ordenación o clasificación de datos es una operación consistente en
organizar un conjunto de datos según determinado orden con respecto a
uno de los campos de los elementos del conjunto
a) Ordenación Interna: (ordenación de listas) si los datos se guardan en arrays, listas
enlazadas, árboles (memoria RAM).
b) Ordenación Externa: (ordenación de archivos) si los datos de guardan
archivos.(disco duro, DVD)
2. Bubble Sort: Imaginamos que los números menores ‘pesan menos’ y
‘suben a la superficie’ como una burbuja. Se basa en el intercambio entre
pares de items
3. Insertion Sort: Se basa en el método seguido por los jugadores de cartas.
Tenemos 2 secciones: Sección Destino (ordenada) y la Sección Origen (por
ordenar). En cada paso tomamos el elemento V[i] (Sección de Origen) y lo
insertamos donde convenga de la Sección Destino.
Resumen
5. Selection Sort: En cada paso seleccionamos el elemento de menor valor
de los no ordenados (Sección Origen) y lo colocamos como primero de los
no ordenados. Idea opuesta a la de Inserción:
• Inserción: trabaja sobre los ya ordenados
• Selección: trabaja sobre los no ordenados
6. Quicksort: Basado en la técnica de divide y vencerás. Conocido como
método rápido y de ordenamiento por partición. Utiliza un pivote para
separar la lista en 2 sub listas, y repite el proceso recursivamente.