Julio Garralón Ruiz Octubre 2009 E.T.S.I. Telecomunicación Universidad de Málaga Tema VI Tema VI Estructuras de datos Estructuras de datos 6.1. Estructuras estáticas. 6.2. Diseño de datos. 6.3. Búsqueda y ordenación. 2 Dpto. de Lenguajes y Ciencias de la Computación Julio Garralón Ruiz Introducción a los computadores octubre-09 TIPOS ENUM {Catedratico,Titular,Ayudante,Becario} TCategoria C TCadena[0..MaxCadena] REGISTRO TFecha N dia, mes, año FINREGISTRO REGISTRO UnProfesor TCadena nombre N dni TFecha f_nacim TFecha f_ingreso TCategoria categoria R sueldo FINREGISTRO VAR UnProfesor prof_algebra Estructuras est Estructuras está ticas ticas Registros individuales 0123 T 1500 P í o B a r r i e n t o s 31 3 92 4 2 56 El tamaño se determina en tiempo de compilación
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
1
Julio Garralón RuizOctubre 2009
E.T.S.I. TelecomunicaciónUniversidad de Málaga
Tema VITema VIEstructuras de datosEstructuras de datos
6.1. Estructuras estáticas.6.2. Diseño de datos.6.3. Búsqueda y ordenación.
2Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
TIPOSENUM {Catedratico,Titular,Ayudante,Becario} TCategoriaC TCadena[0..MaxCadena]REGISTRO TFechaN dia, mes, año
En tiempo de ejecución no tienen que estar todos los registros ocupados. Soluciones:
Registros ocupados consecutivos. Se necesita el número de registros ocupados. Los registros libres están al final.Registros ocupados no consecutivos. Se necesita marcar los registros ocupados. Los registros libres están desperdigados. Ej: DNI = 0.
3
5Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
20Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
DiseDiseñño de datoso de datosCaracterísticas
Importancia equivalente a los algoritmos.Identificación de las operaciones sobre ellos.Evitar la redundancia de información.Documentación: diccionario de datos.Refinamiento sucesivo.Restricciones del lenguaje de programación.
A. WassermanInformation System Design MethodologySoftware Design Technicques, 4th ed.IEEE Computer Society Press,1983, p.43
11
21Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
BBúúsqueda y ordenacisqueda y ordenacióónnAlgoritmos de búsqueda y ordenación
Frecuentes en estructuras lineales (arrays).Existen muchos algoritmos:
Eficientes en el tiempo.Eficientes con la memoria.
Tipos:Internos: utilizan datos de memoria principal.Externos: utilizan datos externos a memoria principal, por ejemplo de disco.
22Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
BBúúsqueda y ordenacisqueda y ordenacióónnTipo TArrayTIPOSZ TArray[1..L]
VARTArray datos /* dónde buscar */N i /* índice */Z x /* elemento buscado */B encontrado
12
23Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
BBúúsquedasquedaBúsqueda lineal
Datos no ordenados previamente.Búsqueda secuencial hasta...
encontrar el elemento buscado, o bien,llegar al final de la estructura de datos.
i=1; encontrado=FALSOMIENTRAS i<=L Y NO encontrado HACERSI datos[i]==x ENTONCES
encontrado = VERDADEROSINOi = i+1
FINSIFINMIENTRAS
24Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
Los tiempos dependen linealmente de L, la longitud de la estructura de datos.
13
25Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
BBúúsquedasquedaBúsqueda lineal en cadenas
Hacia adelante:
ALGORITMO Z PosSubcadena(E TCadena texto, patron)
TT
TT
base
base = 0 // inicioMIENTRAS ......base = base+1...
longt
longp
26Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
BBúúsquedasquedaBúsqueda lineal en cadenas
Hacia atrás:
TT
TT
base
base=longt-longp+1MIENTRAS ......base = base-1...
longt
longp
14
27Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
BBúúsquedasquedaEn estructuras ordenadas
0 2 7 11 18 21 23 37 45
12x
datos
izqder
i
61
-
110
izq = 1der = 10
respecto a un campo clave
elegido aleatoriamenteen el rango izq..der
28Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
BBúúsquedasquedaEn estructuras ordenadas
0 2 7 11 18 21 23 37 45
12x
datos
izqder
i
61
3
410
i = 3datos[3] < xizq = 3+1
15
29Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
BBúúsquedasquedaEn estructuras ordenadas
0 2 7 11 18 21 23 37 45
12x
datos
izqder
i
61
8
47
i = 8datos[8] > xder = 8-1
30Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
BBúúsquedasquedaEn estructuras ordenadas
0 2 7 11 18 21 23 37 45
12x
datos
izqder
i
61
6
45
i = 6datos[6] > xder = 6-1
16
31Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
BBúúsquedasquedaEn estructuras ordenadas
0 2 7 11 18 21 23 37 45
12x
datos
izqder
i
61
4
55
i = 4datos[4] < xizq = 4+1
32Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
BBúúsquedasquedaEn estructuras ordenadas
0 2 7 11 18 21 23 37 45
12x
datos
izq deri
61
5
54
i = 5datos[5] > xder = 5-1
17
33Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
BBúúsquedasquedaEn estructuras ordenadas
0 2 7 11 18 21 23 37 45
12x
datos
izq deri
61
-
54
izq > derNO encontrado5 iteraciones
hasta que se han cruzado izq y der
34Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
BBúúsquedasquedaEn estructuras ordenadasencontrado = FALSOizq = 1; der = LMIENTRAS (izq<=der) Y (NO encontrado) HACERi = cualquier valor entre izq y derSI datos[i]==x ENTONCESencontrado = VERDADERO
SINOSI datos[i]<x ENTONCESizq = i+1
SINOder = i-1
FINSIFINSI
FINMIENTRAS
algoritmo genérico
18
35Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
BBúúsquedasquedaBinaria
0 2 7 11 18 21 23 37 45
12x
datos
izq deri
61
-
110
izq = 1der = 10 2
derizqi +=
elegimos el punto medio del rango izq..der
36Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
BBúúsquedasquedaBinaria
0 2 7 11 18 21 23 37 45
12x
datos
izq deri
61
5
14
i = 5datos[5] > xder = 5-1
19
37Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
BBúúsquedasquedaBinaria
0 2 7 11 18 21 23 37 45
12x
datos
izq deri
61
2
34
i = 2datos[2] < xizq = 2+1
38Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
BBúúsquedasquedaBinaria
0 2 7 11 18 21 23 37 45
12x
datos
izq deri
61
3
44
i = 3datos[3] < xizq = 3+1
20
39Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
BBúúsquedasquedaBinaria
0 2 7 11 18 21 23 37 45
12x
datos
izq deri
61
4
54
i = 4datos[4] < xizq = 4+1
40Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
BBúúsquedasquedaBinaria
Peor caso:
0 2 7 11 18 21 23 37 45
12x
datos
izq deri
61
-
54
izq > derNO encontrado4 iteraciones
O(log2 L) 1log2 +L
¡Peor caso!
21
41Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
OrdenaciOrdenacióónnAlgoritmos de ordenación directos
No utilizan estructuras de datos adicionales.Más simples.Poco eficientes en tiempo:
52Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
OrdenaciOrdenacióónnLa burbuja
12 25 35 89 234 132 98 345 345 983
234 132 98 345 345 983
234 132 98 345 345 983
234 132 98 345 345 983
234 98 132 345 345 983
5ªpasada
2 intercambios
27
53Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
OrdenaciOrdenacióónnLa burbuja
12 25 35 89 98 234 132 345 345 983
234 132 345 345 983234 132 345 345 983
234 132 345 345 983
6ªpasada
1 intercambio
54Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
OrdenaciOrdenacióónnLa burbuja
12 25 35 89 98 132 234 345 345 983
234 345 345 983
234 345 345 9837ªpasada
0 intercambios
28
55Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
OrdenaciOrdenacióónnLa burbuja
12 25 35 89 98 132 234 345 345 983
345 345 983
12 25 35 89 98 132 234 345 345 983
12 25 35 89 98 132 234 345 345 983
8ªpasada
9ªpasada
0 intercambios
0 intercambios
56Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
OrdenaciOrdenacióónnBurbuja con centinela
Si no hay intercambios, no más pasadas.
0 intercambios
234 132 89 12 345 35 98 983 345 25inicio
12 25 35 89 98 132 234 345 345 983
FIN
1ªpasada2ª
pasada3ªpasada4ª
pasada5ªpasada
6ªpasada
7ªpasada
29
57Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
C. A. R. C. A. R. HoareHoareSir Charles Antony Richard Hoare (Tony Hoare) es un informático británico, probablemente más conocido por el desarrollo en 1960 de QuickSort, el algoritmo de ordenación más usado en el mundo, y quizá incluso el algoritmo de cualquier clase más usado en el mundo. También desarrolló la lógica Hoare,y el lenguaje formal CommunicatingSequential Processes usado para especificar interacciones entre procesos concurrentes y la inspiración del lenguaje de programación concurrente Occam.
Nacido en 1934 en Colombo (Sri Lanka) de padres británicos, obtuvo su título en Ciencias Clásicas en la Universidad de Oxford en 1956. Permaneció un año más en Oxford estudiando estadística, y luego estudió traducción de lenguajes humanos por computador en la Universidad del estado de Moscú en Rusia.
En 1960 entró a trabajar en la Elliot Brothers Ltd., una pequeña compañía de fabricación de computadores, donde implementó ALGOL 60 y donde empezó a desarrollar algoritmos en serio.
Se convirtió en profesor de Ciencias de la Computación en la Universidad de Queens, en 1968, en Belfast. En 1977volvió a Oxford como profesor de informática. Ahora es profesor emérito allí, y también es investigador senior en Microsoft Research en Cambridge, Inglaterra.
En 1980 recibe el Premio Turing de la ACM por sus contribuciones a la definición y diseño de lenguajes de programación. En su conferencia de aceptación del premio Turing, Hoarehizo dos comentarios con humor:
“Concluyo que hay dos formas de construir diseño software: una forma es hacerlo tan simple como para que obviamente no tenga deficiencias, y la otra es hacerlo lo suficientemente complicado como para que no haya deficiencias obvias.”
“Deberíamos olvidarnos de las eficiencias pequeñas, digamos acerca del 97% del tiempo: la optimización prematura es la raíz de todos los males.” (Esta cita también se ha atribuido a Donald E. Knuth y RobertFloyd).”