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