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
FINREGISTROREGISTRO UnProfesorTCadena nombreN dniTFecha f_nacimTFecha f_ingresoTCategoria categoriaR sueldo
FINREGISTROVAR
UnProfesor prof_algebra
Estructuras estEstructuras estááticasticasRegistros individuales
0123
T1500
Pío Barrientos
31 3 924 2 56
El tamaño se determina en tiempo de compilación
2
3Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
Estructuras estEstructuras estááticasticasEstructuras estáticas linealesCONST
N MaxProfCentro = 500TIPOS
UnProfesor TProfCentro[1..MaxProfCentro]VAR
TProfCentro prof_teleco
...
prof_teleco[3]
prof_teleco[2].dni
prof_teleco[1].f_ingreso.año
4Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
Estructuras estEstructuras estááticasticasEstructuras estáticas lineales
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
Estructuras estEstructuras estááticasticasEstructuras estáticas lineales
Datos consecutivos
...
vacíos4N nprofesores
PARA i=1 HASTA nprofesores HACER
// procesar cada registro
FINPARA
6Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
Estructuras estEstructuras estááticasticasEstructuras estáticas lineales
Datos no consecutivos
...
PARA i=1 HASTA MaxProfCentro HACERSI prof_teleco[i].dni!=0 ENTONCES
// procesar cada registro
FINSIFINPARA
DNIs inicializados a cero
0 0
4
7Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
Estructuras estEstructuras estááticasticasEstructuras estáticas avanzadas
...
TIPOSENUM {Teleco,Ciencias,Medicina,Informatica} TCentroTProfCentro TProfUniversidad[Teleco..Informatica]
VARTProfUniversidad profUMA
profUMA[Ciencias]profUMA[Teleco] ...
......
profUMA[Medicina]
profUMA[Informatica][2].nombre[0] Letra inicial del nombre del 2do. profesor de informática
8Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
Estructuras estEstructuras estááticasticasRecorrido completoALGORITMO R EdadMedia(E TProfUniversidad univ)VARN dia, mes, año, edad, profeR suma=0.0; TCentro centro
INICIOHoy(dia, mes, año) // obtenemos fecha actualPARA centro=Teleco HASTA Informatica HACERPARA profe=1 HASTA MaxProfCentro HACERedad = año-univ[centro][profe].f_nacim.añosuma = suma+edad
FINPARAFINPARADEVOLVER suma/R(MaxProfCentro*4)
FIN EdadMedia
Acceso secuencial indiscriminado
5
9Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
Estructuras estEstructuras estááticasticasRecorrido completo selectivoALGORITMO R EdadMedia(E TProfUniversidad univ)VAR
N dia, mes, año, edad, profe, nprofes=0R suma=0.0; TCentro centro
INICIOHoy(dia, mes, año) /* obtenemos fecha actual */PARA centro=Teleco HASTA Informatica HACERPARA profe=1 HASTA MaxProfCentro HACERSI univ[centro][profe].dni != 0 ENTONCESedad = año-univ[centro][profe].f_nacim.añosuma = suma+edad; nprofes = nprofes+1
FINSIFINPARA
FINPARADEVOLVER suma/R(nprofes)
FIN EdadMedia
Acceso secuencial selectivo
10Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
Estructuras estEstructuras estááticasticasPaso parcial como parámetro
Dada la estructuraTProfUniversidad profUMA
se puede pasar parcialmente:Definición: ProcesaCentro(E TProfcentro centro)
Llamada: ProcesaCentro(profUMA[Teleco])
Definición: ProcesaProfesor(ES TUnProfesor profesor)
Llamada: ProcesaProfesor(profUMA[Teleco][3])
Definición: ProcesaFecha(S TFecha fecha)
Llamada: ProcesaFecha(profUMA[Teleco][3].f_nacim)
6
11Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
DiseDiseñño de datoso de datosRedundancia de informaciónCONSTN MaxAsignaturas = 1000
TIPOSREGISTRO UnaAsignaturaN dni, TCadena nombre // del profesorTFecha fnacim, fingresoTCategoria cat, R sueldoN cursoTCadena asign
FINREGISTROUnaAsignatura TDocCentro[1..MaxAsignaturas]TDocCentro TDocencia[Teleco..Informatica]
VARTDocencia univMalaga
12Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
DiseDiseñño de datoso de datosRedundancia de informaciónSe puede repetir la información de un profesor
...0178
T 2010
E L S A B A E Z
23 3 8912 8 52
univMalaga[Teleco]
univMalaga[Informatica]
A N A L I S I S
2
...0178
T 2010
E L S A B A E Z
23 3 8912 8 52
C A L C U L O
1
Puede dar lugar a inconsistencias
7
13Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
DiseDiseñño de datoso de datosSolución: definición de las estructurasCONSTN MaxProfesores = 10000N MaxAsignaturas = 1000
TIPOSUnProfesor TProfesores[1..MaxProfesores]REGISTRO UnaAsignaturaN dni // del profesorN cursoTCadena asign
FINREGISTROUnaAsignatura TDocCentro[1..MaxAsignaturas]TDocCentro TDocencia[Teleco..Informatica]
campo clave
14Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
DiseDiseñño de datoso de datosSolución: dos estructuras
Estructura lineal para todos los profesores
Estructura bidimensional para la docencia............
InformaticaMedicinaCienciasTeleco
T
2010
E L S A B A E Z
23 3 89
12 8 52 ...0178
curso
asignatura
0178dni→ campo clave
0178 0178 0178
Sólo se repite el DNI
8
15Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
DiseDiseñño de datoso de datosAcceso indirecto mediante la claveALGORITMO TCadena NombreProfesor(
E TCadena asinatura; // nombre asignaturaE TDocCentro doc_centro; // docencia del centroE TProfesores profes) // base datos profesores
/* Devuelve nombre profesor que imparte “asignatura”,o cadena vacía si la asignatura o el profesor soninválidos */
ALGORITMO Iguales()/* VERDADERO si dos cadenas iguales, FALSO si no */...
FIN Iguales
Escribir(NombreProfesor(“Algebra”, asig[Teleco], profes))
Ejemplo llamada:
16Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
DiseDiseñño de datoso de datosAcceso indirecto mediante la claveALGORITMO N DNIProfesor( // Devuelve DNI profesor
E TCadena asignatura; // que imparte asignaturaE TDocenciaCentro docCentro) // ó 0 si no está
VARN i=1, dni=0
INICIOMIENTRAS i<=MaxAsignaturas Y dni==0 HACERSI Iguales(asignatura,docCentro[i].asign) ENTONCES
dni = docCentro[i].dniSINO
i = i+1FINSI
FINMIENTRASDEVOLVER dni
FIN DNIProfesor
DNI del profesor buscado
9
17Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
DiseDiseñño de datoso de datosAcceso indirecto mediante la claveVAR
N dni, i=1; TCadena nombre=“”INICIO
dni = DNIProfesor(asignatura,doc_centro)SI dni != 0 ENTONCESMIENTRAS i<=MaxProfesores Y
profes[i].dni != dni HACERi = i+1
FINMIENTRASSI profes[i].dni == dni ENTONCESnombre = profes[i].nombre
FINSIFINSIDEVOLVER nombre
FIN NombreProfesor
buscar datos del profesor
buscar DNI
Se puede modularizar: DatosProfesor()
18Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
DiseDiseñño de datoso de datosSolución más modularizadaALGORITMO B DatosProfesor(E N dni;
E TProfesores profes;S UnProfesor datos)
// devuelve FALSO si no estáVAR
N i=1; B esta=FALSOINICIO
MIENTRAS NO esta Y i<=MaxProfesores HACERSI profes[i].dni == dni ENTONCES
esta = VERDADEROdatos = profes[i]
FINSIFINMIENTRASDEVOLVER esta
FIN NombreProfesor
10
19Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
DiseDiseñño de datoso de datosSolución más modularizadaVAR
N dni, i=1; TCadena nombre=“”UnProfesor profe; B existe
INICIOdni = DNIProfesor(asignatura,doc_centro)SI dni != 0 ENTONCESSI DatosProfesor(dni, profes, profe ) ENTONCESnombre = profe.nombre
FINSIFINSIDEVOLVER nombre
FIN NombreProfesor
datos del profesor buscado
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
BBúúsquedasquedaBúsqueda lineal
Complejidad temporal:Mejor caso: 1 comparación.Peor caso: L comparaciones.Caso promedio: L/2 comparaciones.
O(L)
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:
Métodos (ordenación ascendente):Por inserción.Por selección.La burbuja.
O(L2)Los tiempos dependen del cuadrado de la longitud de la estructura de datos
42Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
OrdenaciOrdenacióónnOtros métodos más eficientes
De Shell (shellsort):Por mezcla (mergesort):Rápida (quicksort):Por montículos (heapsort):
O(L log2 L)
O(L1.5)
Los veremos en el segundo cuatrimestre.
22
43Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
OrdenaciOrdenacióónnPor inserción
En cada pasada, se inserta el siguiente:
234 132 89 12 345 35 98 983 345 25
234 132 89 12 345 35 98 983 345 25
132 234 89 12 345 35 98 983 345 25
89 132 234 12 345 35 98 983 345 25
12 89 132 234 345 35 98 983 345 25
bucle exterior
bucle interior
44Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
OrdenaciOrdenacióónnPor inserción
12 89 132 234 345 35 98 983 345 25
12 35 89 132 234 345 98 983 345 25
12 35 89 98 132 234 345 983 345 25
12 35 89 98 132 234 345 983 345 25
12 35 89 98 132 234 345 345 983 25
12 25 35 89 98 132 234 345 345 983
23
45Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
OrdenaciOrdenacióónnPor inserción
Mejora: búsqueda binaria de la posición de inserción.
PARA i=2 HASTA L HACERpos = iMIENTRAS pos>1 Y datos[pos-1]>datos[pos] HACERIntercambiar(datos[pos-1], datos[pos])pos = pos-1
FINMIENTRASFINPARA
12 35 89 98 132 234 345 345 983 25
46Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
OrdenaciOrdenacióónnPor selección
En cada pasada, se selecciona el menor.
234 132 89 12 345 35 98 983 345 25
12 132 89 234 345 35 98 983 345 25
12 25 89 234 345 35 98 983 345 132
12 25 35 234 345 89 98 983 345 132
12 25 35 89 345 234 98 983 345 132
24
47Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
OrdenaciOrdenacióónnPor selección
Se puede modularizar la búsqueda del menor.
12 25 35 89 98 234 345 983 345 132
12 25 35 89 98 132 345 983 345 234
12 25 35 89 98 132 234 983 345 345
12 25 35 89 98 132 234 345 983 345
12 25 35 89 98 132 234 345 345 983
48Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
OrdenaciOrdenacióónnLa burbuja
En cada pasada, ascienden los menores:234 132 89 12 345 35 98 983 345 25
132 89 12 345 35 98 983 25 345234
132 89 12 345 35 98 25 983 345234
132 89 12 345 35 25 98 983 345234
132 89 12 345 25 35 98 983 345234
132 89 12 25 345 35 98 983 345234
132 89 12 25 345 35 98 983 345234
132 12 89 25 345 35 98 983 345234
12 132 89 25 345 35 98 983 345234
1ªpasada
8 intercambios
bucle interior
25
49Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
OrdenaciOrdenacióónnLa burbuja
12 234 132 89 25 345 35 98 983 345
234 132 89 25 345 35 98 345 983
234 132 89 25 345 35 98 345 983
234 132 89 25 345 35 98 345 983
234 132 89 25 35 345 98 345 983
234 132 89 25 35 345 98 345 983
234 132 25 89 35 345 98 345 983
234 25 132 89 35 345 98 345 983
2ªpasada
5 intercambios
50Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
OrdenaciOrdenacióónnLa burbuja
12 25 234 132 89 35 345 98 345 983
234 132 89 35 345 98 345 983234 132 89 35 345 98 345 983
234 132 89 35 98 345 345 983
234 132 89 35 98 345 345 983
234 132 35 89 98 345 345 983
234 35 132 89 98 345 345 983
3ªpasada
4 intercambios
26
51Dpto. de Lenguajes y Ciencias de la ComputaciónJulio Garralón RuizIntroducción a los computadores octubre-09
OrdenaciOrdenacióónnLa burbuja
12 25 35 234 132 89 98 345 345 983
234 132 89 98 345 345 983
234 132 89 98 345 345 983
234 132 89 98 345 345 983
234 132 89 98 345 345 983234 89 132 98 345 345 983
4ªpasada
2 intercambios
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).”