tema 6 - estructura de datos estaticas

29
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

Upload: jose2053

Post on 02-Apr-2015

513 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Tema 6 - Estructura de datos estaticas

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

Page 2: Tema 6 - Estructura de datos estaticas

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.

Page 3: Tema 6 - Estructura de datos estaticas

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

Page 4: Tema 6 - Estructura de datos estaticas

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

Page 5: Tema 6 - Estructura de datos estaticas

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)

Page 6: Tema 6 - Estructura de datos estaticas

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

Page 7: Tema 6 - Estructura de datos estaticas

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

Page 8: Tema 6 - Estructura de datos estaticas

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

Page 9: Tema 6 - Estructura de datos estaticas

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

Page 10: Tema 6 - Estructura de datos estaticas

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

Page 11: Tema 6 - Estructura de datos estaticas

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

Page 12: Tema 6 - Estructura de datos estaticas

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.

Page 13: Tema 6 - Estructura de datos estaticas

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

Page 14: Tema 6 - Estructura de datos estaticas

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

Page 15: Tema 6 - Estructura de datos estaticas

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

Page 16: Tema 6 - Estructura de datos estaticas

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

Page 17: Tema 6 - Estructura de datos estaticas

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

Page 18: Tema 6 - Estructura de datos estaticas

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

Page 19: Tema 6 - Estructura de datos estaticas

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

Page 20: Tema 6 - Estructura de datos estaticas

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!

Page 21: Tema 6 - Estructura de datos estaticas

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.

Page 22: Tema 6 - Estructura de datos estaticas

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

Page 23: Tema 6 - Estructura de datos estaticas

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

Page 24: Tema 6 - Estructura de datos estaticas

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

Page 25: Tema 6 - Estructura de datos estaticas

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

Page 26: Tema 6 - Estructura de datos estaticas

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

Page 27: Tema 6 - Estructura de datos estaticas

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

Page 28: Tema 6 - Estructura de datos estaticas

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

Page 29: Tema 6 - Estructura de datos estaticas

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).”