26
Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Página 1 de 26 Estructuras de datos ESTRUCTURA DE DATOS: Una estructura de datos es un conjunto de datos agrupados bajo un mismo nombre que pueden ser caracterizados por su organización y por las operaciones que sobre ellos se definen. Entero Datos simples Estáticos Real Carácter Lógico Arreglo (vector, matriz) Estáticos Cadena Datos estructurados Registro Dinámicos … (fuera del alcance del curso) Las estructuras de datos estáticas son aquellas en las que el tamaño ocupado en la memoria se define antes de que el programa se ejecute y no puede ser modificado durante la ejecución del programa. Las estructuras de datos dinámicas son aquellas en las que el tamaño podrá modificarse durante la ejecución del programa; teóricamente no hay límites a su tamaño, salvo el que impone la memoria disponible en la computadora.

Estructuras de datossorribas/info1_notas...Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Página 2 de 26 Estructuras de datos: Arreglos Un arreglo es

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Estructuras de datossorribas/info1_notas...Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Página 2 de 26 Estructuras de datos: Arreglos Un arreglo es

Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática

Página 1 de 26

Estructuras de datos ESTRUCTURA DE DATOS: Una estructura de datos es un conjunto de datos agrupados bajo un mismo nombre que pueden ser caracterizados por su organización y por las operaciones que sobre ellos se definen.

Entero

Datos simples Estáticos Real Carácter Lógico Arreglo (vector, matriz) Estáticos Cadena Datos estructurados Registro Dinámicos … (fuera del alcance del

curso)

Las estructuras de datos estáticas son aquellas en las que el tamaño ocupado en la memoria se define antes de que el programa se ejecute y no puede ser modificado durante la ejecución del programa. Las estructuras de datos dinámicas son aquellas en las que el tamaño podrá modificarse durante la ejecución del programa; teóricamente no hay límites a su tamaño, salvo el que impone la memoria disponible en la computadora.

Page 2: Estructuras de datossorribas/info1_notas...Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Página 2 de 26 Estructuras de datos: Arreglos Un arreglo es

Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática

Página 2 de 26

Estructuras de datos: Arreglos

Un arreglo es una estructura de datos estática porque el espacio de memoria que se reserva para todas sus elementos no puede modificarse una vez que se lo haya fijado y homogénea porque sus elementos son todos del mismo tipo de datos.

Los arreglos se caracterizan por las siguientes propiedades: 1. Cantidad de elementos prefijada: esto determina el tamaño del bloque de memoria que ocupará. 2. Elementos directamente accesibles: al ubicarse en posiciones adyacentes son fácilmente individualizables. 3. Elementos de igual tipo: esto determina que, independientemente, todos ocupan la misma cantidad de bytes. Sus elementos se identifican a través de un índice. También se denominan “vectores” por su similitud con los vectores matemáticos, si son arreglos que sólo presentan una dimensión. Por ejemplo: tenemos el conjunto de notas obtenidas por los alumnos durante un parcial. Cada nota individual es guardada en un elemento Nota(i), donde “Nota” indica el nombre del arreglo y el índice i significa a qué valor en particular nos estamos refiriendo.

Nota(1) Nota(2) Arreglo: Nota Elementos: .... .... Nota(i) .... Nota(50)

Page 3: Estructuras de datossorribas/info1_notas...Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Página 2 de 26 Estructuras de datos: Arreglos Un arreglo es

Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática

Página 3 de 26

Arreglos unidimensionales (Vectores) Cómo almacenamos en memoria un arreglo unidimensional ?

MEMORIA

Nota (1) →→→→ Dirección X

Nota (2) →→→→ Dirección X+1

Nota (3) →→→→ Dirección X+2

Nota (i) →→→→ Dirección X+i

Nota (50) →→→→ Dirección X+ 49

Los elementos de un arreglo se almacenan en direcciones consecutivas de memoria • Cada elemento del arreglo tiene asignada una dirección de memoria.

• Cada elemento del arreglo puede ser utilizado como si este fuese una variable simple.

Page 4: Estructuras de datossorribas/info1_notas...Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Página 2 de 26 Estructuras de datos: Arreglos Un arreglo es

Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática

Página 4 de 26

Operaciones

Consideremos el siguiente vector

X(1) X(2) X(3) X(4) X(5) X(6) X(7) X(8)

14.0 12.0 8.0 7.0 5.23 6.15 5.66 0.0 OPERACIONES CON VECTORES Escribir ( X(1) ) Visualiza el valor de X(1)

X(4) ←←←← 45 Asigna el valor 45 al tercer elemento del vector X

SUMA ←←←← X(1) + X(3) Asigna el valor resultante de la suma de los valores almacenados en el primer y tercer elemento de X

SUMA ←←←← SUMA + X(4) Incrementa el valor de SUMA con el valor actual del cuarto elemento de X

X(5) ←←←← X(5) + 3.5 Suma 3.5 al valor que se encuentra almacenado en el quinto elemento de X

X(6) ←←←← X(1) + X(2) Asigna un nuevo valor al sexto elemento de X, resultado de sumar los valores del primer y segundo elemento.

Page 5: Estructuras de datossorribas/info1_notas...Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Página 2 de 26 Estructuras de datos: Arreglos Un arreglo es

Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática

Página 5 de 26

Operaciones: Lectura, Escritura y Asignación

La asignación de valores a un vector se realiza en forma individual para cada uno de los elementos que lo componen.

X(25) ←←←← 5 asigna el valor 5 al elemento 25 del vector X

También se puede utilizar una estructura de repetición para asignar valores a varios o a todos los elementos de un arreglo Ejemplos:

A(1) ←←←← 5

A(2) ←←←← 1.01

A(3) ←←←← 5

A(4) ←←←← 5.5

REPETIR PARA i ���� 1 , 4 LEER (A(i)) FIN PARA

REPETIR PARA i ���� 1 , 4 ESCRIBIR (A(i)) FIN PARA

REPETIR PARA i ���� 1 , 4 A(i) ���� 0 FIN PARA

i ←←←← 1

REPETIR MIENTRAS i <= 4 LEER (A(i))

i ←←←← i + 1

FIN MIENTRAS

ESCRIBIR (A(1), A(3)) ESCRIBIR (A(1)*A(4)+A(2))

Page 6: Estructuras de datossorribas/info1_notas...Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Página 2 de 26 Estructuras de datos: Arreglos Un arreglo es

Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática

Página 6 de 26

Declaración Cómo declaramos una variable de este nuevo tipo de estructura de datos? Variables tipo de dato : nombre del arreglo (tamaño)

Algoritmo leer_vector1

Variables Entero : F(20)

Entero : i

Inicio Repetir Para i ���� 1 , 20

Leer (F(i))

Fin para ……. Fin

Ejemplo: Lectura de 20 valores enteros. Acumular los datos en un arreglo de 20 elementos de nombre F.

Algoritmo leer_vector2

Variables Real : Z(100) Entero : i

Inicio Repetir Para i ���� 1 , 70

Leer (Z(i))

Fin para ……. Fin

Ejemplo: no necesariamente tiene que utilizarse toda la memoria reservada al inicio.

Page 7: Estructuras de datossorribas/info1_notas...Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Página 2 de 26 Estructuras de datos: Arreglos Un arreglo es

Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática

Página 7 de 26

Estructuras de datos: Arreglos de más de una dimensión (matrices)

En los arreglos de más de una dimensión cada uno de los elementos que lo componen se lo ubica por más de un índice. En el caso de arreglos bi-dimensionales se requieren 2 índices para definir al elemento. En general en el caso de n-dimensional habrá n índices para referirse al elemento. Los arreglos bi-dimensionales también se denominan “matrices” por su similitud con las matrices matemáticas. Columna 1 Columna 2 Columna 3 Columna 4 Columna 5

Fila 1

Fila 2

Fila 3

Fila 4

Fila 5

Page 8: Estructuras de datossorribas/info1_notas...Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Página 2 de 26 Estructuras de datos: Arreglos Un arreglo es

Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática

Página 8 de 26

Arreglos de más de una dimensión Cómo almacenamos en memoria un arreglo bidimensional ?

Los lenguajes de programación pueden almacenar en memoria los arreglos en dos formas diferentes: según el orden de fila mayor o según el orden de columna mayor Supongamos el arreglo siguiente:

B(1,1) B(1,2) B(1,3)

B(2,1) B(2,2) B(2,3)

MEMORIA

por fila por columna

B(1,1) →→→→ B(1,1) →→→→ Dirección X

B(1,2) →→→→ B(2,1) →→→→ Dirección X+1

B(1,3) →→→→ B(1,2) →→→→ Dirección X+2

B(2,1) →→→→ B(2,2) →→→→ Dirección X+3

B(2,2) →→→→ B(1,3) →→→→ Dirección X+4

B(2,3) →→→→ B(2,3) →→→→ Dirección X+5

C, Pascal almacenan los arreglos por fila; mientras que FORTRAN lo hace por columnas.

Page 9: Estructuras de datossorribas/info1_notas...Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Página 2 de 26 Estructuras de datos: Arreglos Un arreglo es

Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática I

Página 9 de 26

Declaración y operaciones La declaración es similar a la de los arreglos unidimensionales Variables tipo de dato : nombre del arreglo (cantidad de filas, cantidad de columnas)

Algoritmo leer_matriz

Variables Entero: M(5,8) Entero: i ,j

Inicio Repetir Para i ���� 1 , 5 Repetir Para j ���� 1 , 8 Leer ( M(i,j) )

Fin para Fin para ……. Fin

Ej.: Se declara la matriz M como entero de 5 filas por 8 columnas. La lectura de sus elementos se realiza utilizando 2 estructuras de repetición. También se deben utilizar 2 estructuras de repetición

para la asignación y escritura de los elementos.

Page 10: Estructuras de datossorribas/info1_notas...Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Página 2 de 26 Estructuras de datos: Arreglos Un arreglo es

Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática I

Página 10 de 26

Cadena de caracteres CADENA DE CARACTERES: Una cadena de caracteres o string es un conjunto de caracteres – incluido el blanco – que se almacenan en un área contigua de la memoria.

La longitud de una cadena es el número de caracteres que contiene. La cadena que no contiene ningún carácter se denomina cadena vacía o nula, y su longitud es cero; no se debe confundir con una cadena compuesta sólo de blancos – espacios en blanco -, ya que ésta tendrá como longitud el número de blancos de la misma.

La representación de las cadenas suele ser, en la mayoría de los lenguajes, con comillas simples o dobles.

’12 de octubre 1492’

‘Por fin llegaste’

‘ ‘

‘AMERICA ES GRANDE’

Cadenas de longitud fija

Se consideran vectores con la cantidad de elementos declarados, si la cadena no tiene la cantidad de caracteres declarada los elementos no definidos se rellenan con valores nulos (cod. ASCII 0).

E S T A C A S A E S U N A R U I N A 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Se declaró con una dimensión de 24 caracteres y los dos últimos se rellenaron con valores nulos.

Page 11: Estructuras de datossorribas/info1_notas...Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Página 2 de 26 Estructuras de datos: Arreglos Un arreglo es

Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática I

Página 11 de 26

Instrucciones básicas con cadenas Las instrucciones básicas con cadenas se realizan de modo similar al tratamiento de las instrucciones ya vistas. Declaración

Variables Cadena(longitud) : nombre donde longitud hace referencia a la cantidad de caracteres máximo que

va contener la cadena Asignar: la instrucción de asignación debe contener en el lado derecho de la asignación una constante tipo

cadena o bien otra variable del mismo tipo.

nombre ←←←← ‘informática I’

Entrada / Salida

Leer(nombre) el texto introducido por alguno de los dispositivos de entrada se asigna a la variable de tipo cadena nombre.

Escribir(nombre) el texto contenido en la variable de tipo cadena nombre aparece en alguno de los dispositivos de salida.

Page 12: Estructuras de datossorribas/info1_notas...Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Página 2 de 26 Estructuras de datos: Arreglos Un arreglo es

Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática I

Página 12 de 26

Operaciones con cadenas

� Cálculo de longitud � Comparación � Concatenación

Cálculo de la longitud de una cadena: la longitud de una cadena es el número de caracteres de la cadena.

Por ejemplo ‘Aprobaron el 55% el primer parcial’’ tiene 34 caracteres.

La operación de determinación de la longitud de una cadena se representará por la función longitud, cuyo formato es

Longitud(cadena)

El resultado de tal función es un valor numérico de tipo entero

Longitud(‘Don Quijote de la Mancha’) Proporciona el valor 24

Longitud(‘� � � ’) Cadena de tres blancos proporciona el valor 3

Longitud(‘� � � Informática’) Cadena ‘Informática’ rellenada con blancos a izquierda proporciona el valor 14

Por ser una función se puede considerar un dato de tipo entero y por consiguiente, puede ser un operando dentro de expresiones aritméticas.

4 + 5 + longitud(‘DEMO� ’) = 4 + 5 + 5 = 13

Page 13: Estructuras de datossorribas/info1_notas...Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Página 2 de 26 Estructuras de datos: Arreglos Un arreglo es

Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática I

Página 13 de 26

Comparación

La comparación de cadenas (igualdad y desigualdad) es una operación muy importante, sobre todo en la clasificación de dato tipo carácter, que se utiliza con mucha frecuencia en aplicaciones de proceso de datos (clasificación de listas, tratamiento de texto, etc). Los criterios de comparación se basan en el orden numérico del código o juego de caracteres ASCII.

El carácter ‘A’ (código 65) < el carácter ‘C’ (código 67)

El carácter ‘8’ (código 56) < el carácter ‘i’ (código 105)

Dos cadenas son iguales si la longitud de ambas cadenas es la misma y si todos sus caracteres son iguales entre si.

Los criterios para comprobar la desigualdad de cadenas utilizan normalmente los operadores de relación usuales <, <=, >=, <> y se ajustan a una comparación sucesiva de caracteres correspondientes en ambas cadenas hasta conseguir dos caracteres diferentes. De este modo, se puede conseguir clasificaciones alfanuméricas

‘GARCIA’ < ‘GOMEZ’

Ejemplos

‘LUIS’ < ‘LUISITO’ � Verdadero

‘TOMAS’ < ‘LUIS’ � Falso

‘LUIS’ < ‘LUIS ALBERTO’ � Verdadero

Page 14: Estructuras de datossorribas/info1_notas...Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Página 2 de 26 Estructuras de datos: Arreglos Un arreglo es

Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática

Página 14 de 26

Concatenación

La concatenación es la operación de reunir varias cadenas de caracteres en una sola, pero conservando el orden de los caracteres de cada una ellas.

El símbolo que representa la concatenación varía de unos lenguajes a otros. Los más utilizados son: +, //, &, O. En nuestro caso utilizaremos el símbolo +

Ejemplos

‘primer’ + ‘parcial’ + ‘informáticaI’ = ‘primerparcialinformáticaI’

Longitud(‘primer’) + Longitud(‘parcial’) + Longitud(‘informáticaI’) = Longitud(‘primerparcialinformáticaI’)

Page 15: Estructuras de datossorribas/info1_notas...Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Página 2 de 26 Estructuras de datos: Arreglos Un arreglo es

Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática

Página 15 de 26

Arreglos de cadenas de caracteres

También se pueden agrupar varias cadenas de caracteres y formar arreglos:

Variables Cadena(15) : Nombres(5)

J U A N C A R L O S A L B E R T O A N A M A R I A M A R C E L O A L E J A N D R A

Ejemplos

Nombres(1) � ‘JUAN CARLOS’

Escribir( Nombres(2) )

Repetir Para i �1 , 5

Leer(Nombres(I)) Fin Para

Page 16: Estructuras de datossorribas/info1_notas...Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Página 2 de 26 Estructuras de datos: Arreglos Un arreglo es

Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática

Página 16 de 26

Estructuras de datos: Registros

Un registro es una estructura de datos estática, porque el espacio de memoria que se reserva para todos sus elementos no puede modificarse una vez que se lo haya fijado y heterogénea porque sus elementos pueden ser de diferentes tipos, aunque esto no invalida que puedan ser de igual tipo. Cada componente o elemento de un registro se llama campo y se identifica por un nombre. Los campos de un registro se corresponden con lugares adyacentes de memoria y su funcionalidad es la misma que la de una variable

Nombre Legajo Nota Trabaja Tipo cadena Tipo cadena Tipo real Tipo lógico

campos

Para acceder a un campo, bastará con mencionar su nombre o identificador y el nombre del registro del que forma parte. Se usa un operador especial para separar ambos nombres: generalmente el símbolo será el punto Notación algorítmica en seudocódigo:

Identificador de la variable registro.Identificador del campo

Page 17: Estructuras de datossorribas/info1_notas...Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Página 2 de 26 Estructuras de datos: Arreglos Un arreglo es

Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática

Página 17 de 26

Declaración de registros La creación por parte del usuario de un registro requiere la creación de un nuevo tipo de dato estructurado. Se debe colocar una nueva sección en el algoritmo denominada “Tipo” Algoritmo EjemRegistro Tipo

Registro Alumno Cadena(longitud): nombre Cadena(longitud):legajo Real: Nota Lógico: Trabaja

Fin Variables

Alumno: R … Declaración del registro de un alumno cuyos campos son: Nombre, Legajo, Nota y Trabaja. La declaración realizada ha creado un tipo de dato estructurado estático llamado “Alumno” con cuatro campos. Una vez creado el tipo de dato por el usuario se lo utiliza en la declaración de variables. Hasta ese momento no existía ninguna variable asociada a este nuevo tipo de datos. Ahora la variable “R” tiene asociado el tipo de dato estructurado “Alumno” (la variable “R” almacena la información relativa a un alumno) No confundir: Alumno NO es una variable, sino un nuevo tipo de datos R es una variable que pertenece al tipo de datos Alumno

Page 18: Estructuras de datossorribas/info1_notas...Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Página 2 de 26 Estructuras de datos: Arreglos Un arreglo es

Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática

Página 18 de 26

Operaciones básicas La asignación de valores a un registro se realiza en forma individual campo por campo. R.nombre � ‘Juan’ asigna el valor “Juan” al campo nombre de la variable R Segmentos de algoritmos: … Leer (R.nombre) Leer (R.legajo) Leer (R.nota) Leer (R.trabaja) … … Escribir (‘El nombre del alumno es: ‘,R.nombre) Escribir (‘Legajo: ‘,R.legajo) Escribir (‘Nota primer parcial: ‘,R.nota) Escribir (‘Situación laboral: ‘,R.trabaja)

Page 19: Estructuras de datossorribas/info1_notas...Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Página 2 de 26 Estructuras de datos: Arreglos Un arreglo es

Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática

Página 19 de 26

Arreglos como campos de registros y arreglos de registros Un campo de un registro puede ser un arreglo: Tipo

Registro Alumno Cadena(longitud):nombre Cadena(longitud):legajo Real: Nota(7) Lógico: trabaja

Fin Variables

Alumno: R

Y también se puede tener un arreglo de registros: Tipo

Registro Alumno Cadena(longitud):nombre Cadena(longitud):legajo Real: Nota(7) Lógico: trabaja

Fin Variables

Alumno: com11(60)

Page 20: Estructuras de datossorribas/info1_notas...Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Página 2 de 26 Estructuras de datos: Arreglos Un arreglo es

Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática

Página 20 de 26

ORDENAMIENTO: MÉTODO de INTERCAMBIO o BURBUJA Problema: ordenar en forma ascendente el siguiente vector 50, 15, 56, 14, 35, 1, 12, 9

Solución: 1, 9, 12, 14, 15, 35, 50, 56 Aplicaremos el método de ordenamiento por intercambio (método de la burbuja)

Se basa en la comparación pares de elementos adyacentes e intercambiarlos si no satisfacen el orden que se quiere imponer.

50 15 56 14 35 1 12 9

A(1) A(2) A(3) A(4) A(5) A(6) A(7) A(8) Recurrencia:

1. Comparar A(1) y A(2); si están en orden, se mantienen como están, en caso contrario, se intercambian entre sí.

2. A continuación se comparan los elementos 2 y 3; de nuevo se intercambian si es necesario.

3. El proceso continúa hasta que cada elemento del vector ha sido comparado con sus elementos adyacentes y se han realizado los intercambios

necesarios.

Vector

Inicial

1ra

Comp.

2da

Comp.

3ra

Comp.

....

A(1) 50 15 15 15 15 15 15 15

A(2) 15 50 50 50 50 50 50 50

A(3) 56 56 56 14 14 14 14 14

A(4) 14 14 14 56 35 35 35 35

A(5) 35 35 35 35 56 1 1 1

A(6) 1 1 1 1 1 56 56 12

A(7) 12 12 12 12 12 12 12 9

A(8) 9 9 9 9 9 9 9 56

Paso 1

Page 21: Estructuras de datossorribas/info1_notas...Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Página 2 de 26 Estructuras de datos: Arreglos Un arreglo es

Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática

Página 21 de 26

MÉTODO de INTERCAMBIO o BURBUJA

Estado Inicial Después del

paso 1

Después del

paso 2

50 15 15

15 50 14

56 14 35

14 35 1

35 1 12

1 12 9

12 9 50

9 56 56

Completar como ejercicio la tabla siguiente.

Inicial Paso 1 Paso 2 .... Final

50 15 15 .... 1

15 50 14 9

56 14 35 12

14 35 1 14

35 1 12 15

1 12 9 35

12 9 50 50

9 56 56 56

Page 22: Estructuras de datossorribas/info1_notas...Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Página 2 de 26 Estructuras de datos: Arreglos Un arreglo es

Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática

Página 22 de 26

SEUDOCÓDIGO: MÉTODO de INTERCAMBIO o BURBUJA

Algoritmo Burbuja

Variables Real: A(100) // podría declararse el tipo Vector como Real o Caracter

Real : aux

Entero: i, j, N

Inicio Escribir (‘ Ingrese número de elementos’)

Leer(N) // cantidad de elementos máxima es 100

Repetir Para i � 1 , N

Leer( A(i) )

Fin para

Repetir Para i � 1 , N –1 // el índice i indica el paso que se está ejecutando

Repetir Para j � 1 , N – 1 // el índice j la comparación dentro de dicho paso

Si A(j) > A(j+1) entonces // de ser necesario se procede al intercambio de valores

Aux ← A(j)

A(j) ← A(j+1)

A(j+1) ← Aux

Fin si

Fin para

Fin para

Repetir Para i � 1 , N

Escribir (A(i))

Fin para

Fin

Page 23: Estructuras de datossorribas/info1_notas...Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Página 2 de 26 Estructuras de datos: Arreglos Un arreglo es

Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática

Página 23 de 26

BÚSQUEDA Dado: 50 15 56 14 35 9 12 19 Se trata de determinar si entre las componentes del vector aparece o no un determinado valor. En caso

afirmativo dar la o las posiciones donde ello ocurre.

Buscar si alguna componente es 9. El elemento 6 del vector satisface ese requerimiento. En cambio, si

buscamos el número 13, no hay ninguna componente con tal valor.

Métodos de búsqueda:

1) Búsqueda secuencial: .El algoritmo de búsqueda en un arreglo no necesariamente ordenado debe

recorrerlo componente por componente. Por esa razón el método se denomina secuencial.

2) Búsqueda dicotómica: El algoritmo de búsqueda requiere que el arreglo tenga sus componentes

ordenadas.

Sea n la cantidad de componentes de un vector ordenado de menor a mayor, en el cual queremos

encontrar un dato. Primero seleccionamos la componente cuyo subíndice es aproximadamente el punto

medio: int( (n+1) / 2 ). Si su valor es el del dato, se terminó la búsqueda. Si no, si el dato es menor que

esta componente, sabemos que habrá que seguir buscándolo en las componentes anteriores solamente, y

si es mayor, sólo en las componentes posteriores.

Page 24: Estructuras de datossorribas/info1_notas...Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Página 2 de 26 Estructuras de datos: Arreglos Un arreglo es

Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática

Página 24 de 26

SEUDOCÓDIGO: método de BÚSQUEDA DICOTÓMICA Algoritmo Bdicotomica

Variables real : x(100) , numero

entero: n, i, izq, der, centro

Inicio leer (n)

Repetir Para i � 1 , n

leer(x(i))

Fin para leer (numero) // dato a buscar

izq ← 1 // comienza la búsqueda

der ← n

centro ← int((izq + der)/2)

Repetir Mientras x(centro) <> numero y izq <= der

Si numero < x(centro) entonces

der ← centro - 1

sino izq ← centro + 1

Fin si centro ← int((izq + der)/2)

Fin mientras Si x(centro) = numero entonces

escribir (numero,’en posición’,centro)

sino escribir (‘no aparece’, numero)

Fin si

Fin

Page 25: Estructuras de datossorribas/info1_notas...Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Página 2 de 26 Estructuras de datos: Arreglos Un arreglo es

Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática

Página 25 de 26

Método de INTERCALACIÓN

Desarrollaremos un método que permita intercalar dos arreglos ordenados de igual forma, los cuales se van a combinar para producir un único arreglo, también ordenado. Dado A y B arreglos de un mismo tipo ordenados de igual manera (supongamos de menor a mayor), de dimensiones N y M respectivamente, se pretende crear un nuevo arreglo C de dimensión N+M con los elementos de A y B intercalados de manera tal que C resulte ordenado. Por ejemplo:

A 9

Intercalación

B 7

=

C 7 35 20 9 41 25 20 35 25 35 35 41

Page 26: Estructuras de datossorribas/info1_notas...Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática Página 2 de 26 Estructuras de datos: Arreglos Un arreglo es

Facultad de Ciencias Exactas, Ingeniería y Agrimensura – UNR Informática

Página 26 de 26

SEUDOCÓDIGO: método de INTERCALACIÓN Algoritmo Intercalación

Variables Real: A(100), B(100), C(200)

Entero : i, j, k, L, N, M

Inicio Leer ( N)

LECTURA ( A, N) // la lectura de los arreglos se hace mediante un subalgoritmo

Leer ( M)

LECTURA (B, M)

i ← 1 // comienza la intercalación

j ← 1

k ← 0

Repetir mientras i <= N y j<= M

k ← k + 1

Si A(i) < B(j) entonces // se comparan los elementos de A y de B y se toma el más pequeño para colocarlo en C

C(k) ← A(i)

i ← i + 1

sino C(k) ← B(j)

j ← j + 1

Fin si

Fin mientras Si i <= N entonces // alguno de los dos arreglos A o B ya se habrán procesado todos sus elementos,

Repetir Para L � i , N // restando colocar en el arreglo C los que faltan procesar del otro arreglo. Pero como estos elementos ya

k ← k + 1 // están ordenados, simplemente se los copian en el arreglo C

C(k) ← A(L)

Fin para

sino Repetir Para L � j , M

k ← k + 1

C(k) ← B(L)

Fin para

Fin si ESCRITURA ( C, K) // la escritura del arreglo se hace mediante un subalgoritmo

Fin