Algoritmos y Estructuras de Datos. Gu´ıa de Trabajos Prácticos Nro

Anuncio
Universidad Nacional del Litoral
Facultad de Ingenierı́a y Ciencias Hı́dricas
Departamento de Informática
Algoritmos y Estructuras de Datos
Algoritmos y Estructuras de Datos.
Guı́a de Trabajos Prácticos Nro. 7
Clasificación.
Ej. 1.- Dados los ocho enteros 1, 7, 3, 2, 0, 5, 0, 8, clasificarlos por medio de
i) clasificación por burbuja;
ii) clasificación por inserción;
iii) clasificación por selección.
Ej. 2.- Dados los enteros 22, 36, 6, 79, 26, 45, 75, 13 clasificarlos por
i) clasificación rápida;
ii) clasificación por montı́culos;
iii) clasificación por urnas, tratándolos como pares de dı́gitos en 0-9.
Ej. 3.- El procedimiento “Shellsort”, llamado también clasificación de incremento decreciente,
clasifica un arreglo A[1..n] de enteros ordenando n/2 pares (A[i], A[n/2 + i]) para
1 ≤ i ≤ n/2 en el primer recorrido, n/4 cuádruplos (A[i], A[n/4 + i], A[n/2 + i],
A[3n/4 + i]) para 1 ≤ i ≤ n/4 en el segundo recorrido, n/8 óctuplos en el tercer recorrido
y ası́ sucesivamente. En cada recorrido, el ordenamiento se realiza por clasificación por
inserción.
procedure shell sort ( var A: array [1. .n] of integer);
var
i, j, incr : integer;
begin
incr := n div 2;
while incr > 0 do begin
for i := incr + 1 to n do begin
j := i − incr;
while j > 0 do begin
if A [j] > A [j+incr] then begin
intercambia (A[j], A[j + incr]);
j := j − incr
end
else
j := 0
end;
end
1
Universidad Nacional del Litoral
Facultad de Ingenierı́a y Ciencias Hı́dricas
Departamento de Informática
Algoritmos y Estructuras de Datos
incr := incr div 2;
end
end;
i) Clasificar las secuencias de enteros de los ejercicios 1 y 2 usando Shellsort.
ii) Mostrar que si A[i] y A[n/2k + i] quedan clasificados en el recorrido k, (es decir,
fueron intercambiados), entonces esos dos elementos permanecen clasificados en el
recorrido k+1.
iii) Las distancias entre elementos comparados e intercambiados en un recorrido
disminuyen como n/2, n/4, ... 1. Demostrar que Shellsort trabajará con cualquier
secuencia de distancias siempre que la última distancia sea 1.
iv) (Opcional) Mostrar que Shellsort trabaja en un tiempo O(n1.5 ).
Ej. 4.- Obténgase el procedimiento CONCATENA para el procedimiento de clasificación por urnas.
Ej. 5.- Escriba un programa para encontrar los k elementos más pequeños de un arreglo de
longitud n. ¿ Cuál es la complejidad de tiempo del programa? ¿ Para qué valor de k es
ventajoso clasificar el arreglo?
2
Descargar