estructura de datos 2 corte

37
BÚSQUEDA, ELIMINAR, AGREGAR DATOS EN UN VECTOR Lic. Diego Fabian Gómez

Upload: uniminuto-san-francisco

Post on 09-Jan-2017

189 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Estructura de datos 2 corte

BÚSQUEDA, ELIMINAR, AGREGAR DATOS EN UN VECTOR

Lic. Diego Fabian Gómez

Page 2: Estructura de datos 2 corte

BÚSQUEDA EN UN VECTOR• Esta operación, relacionada con la

recuperación de información, consiste en encontrar un determinado valor dentro del vector, obteniendo su posición en el mismo en caso que éste exista o declarar la búsqueda como fallida en caso de no encontrarlo. La experiencia a la hora de buscar un dato entre una colección de ellos

Page 3: Estructura de datos 2 corte

Búsqueda secuencial• Consiste en recorrer el vector, con sus datos no

necesariamente ordenados, del principio hacia el final. Si se encuentra el valor buscado se da por finalizada la búsqueda; en caso contrario, tras haber recorrido todo el vector se indica que el elemento en cuestión no se encuentra almacenado en el vector de rango n.

• El algoritmo es el siguiente:

Page 4: Estructura de datos 2 corte

Búsqueda secuencial

Page 5: Estructura de datos 2 corte

Búsqueda centinela• Una manera más eficaz de realizar una búsqueda secuencial

consiste en modificar el algoritmo utilizando un elemento centinela. Este elemento se agrega al vector al final del mismo. El valor del elemento centinela es el argumento. El propósito de este elemento centinela, A[n+1], es significar la búsqueda siempre tendrá éxito. El elemento A[n+1] sirve como centinela y se le asigna el valor de t antes de iniciar la búsqueda. En cada paso se evita la comparación i con n y por consiguiente este algoritmo será preferible al método anterior. Si el índice alcanzase el valor de n+1, supondría que el argumento no pertenece al vector original y en consecuencia la búsqueda no tiene éxito.

Page 6: Estructura de datos 2 corte

Búsqueda centinela

Page 7: Estructura de datos 2 corte

Búsqueda centinela

Page 8: Estructura de datos 2 corte

Búsqueda centinela• A pesar de mejorar la búsqueda, el

número de comparaciones es alta y por lo tanto el tiempo es igual.

• Lo mejor es ordenar el vector.

Page 9: Estructura de datos 2 corte

Búsqueda binaria• Se aplica a vectores cuyos datos han sido

previamente ordenados.• El algoritmo de búsqueda binaria se basa en los

siguientes pasos:– Examinar el elemento central del vector, si éste es el

elemento buscado entonces la búsqueda ha terminado.– En caso contrario, se determina si el elemento buscado

está en la primera o en la segunda mitad del vector y a continuación se repite el proceso, utilizando el elemento central del subvector correspondiente.

Page 10: Estructura de datos 2 corte

Búsqueda binaria• Observemos el siguiente vector:

• Se desea buscar el número 2983

Page 11: Estructura de datos 2 corte

Búsqueda binaria• Para buscar el elemento 2983 situado en

la quinta posición, que resulta ser distinto.• Al ser 2983 mayor que 2898, se desprecia

la primera mitad de vector, y se queda la segunda:

Page 12: Estructura de datos 2 corte

Búsqueda binaria• Se examina ahora el número central 3005,

situado en la posición 7, que resulta ser distinto y menor, por lo tanto se queda con la primera mitad del vector.

Page 13: Estructura de datos 2 corte

Búsqueda binaria• Finalmente se encuentra el valor buscado

que coincide con el central.

• Si el valor fuera diferente se daría como fracaso ya que no hay más mitades donde buscar.

Page 14: Estructura de datos 2 corte

Búsqueda binaria

Page 15: Estructura de datos 2 corte

Búsqueda binaria

Page 16: Estructura de datos 2 corte

Búsqueda binaria

Page 17: Estructura de datos 2 corte

Insertar datos en un vector• La operación insertar consiste en colocar

un nuevo elemento, en una determinada posición del vector, sin perder la otra información.

Page 18: Estructura de datos 2 corte

Insertar datos en un vector• Vector llamado COCHES de 9 elementos que

contiene 7 marcas de automóviles, en orden alfabético, y se desea insertar dos nuevas marcas OPEL y CITRÖEN manteniendo el orden al alfabético del vector.

• Alfa Romeo, Fiat, Ford, Lancia, Renault, Seat• Como OPEL, esta entre Lancia y Renault, se

deben desplazar hacia abajo.

Page 19: Estructura de datos 2 corte

Insertar datos en un vector• Es decir ocupan las posiciones relativas 6 y 7.• Luego se hace lo mismo con la marca CITRÖEN

la cual debe ocupar la posición 2.

Page 20: Estructura de datos 2 corte

Insertar datos en un vector• Es decir ocupan las posiciones relativas 6 y 7.• Luego se hace lo mismo con la marca CITRÖEN

la cual debe ocupar la posición 2.

Page 21: Estructura de datos 2 corte

Insertar datos en un vector

Page 22: Estructura de datos 2 corte

Eliminar datos en un vector• La operación de borrar es distinta, según

el elemento a eliminar se encuentre al final del vector (no presenta ningún problema) o se borre un elemento del interior del mismo vector. En donde todos los que estén debajo de el elemento borrado deberán subir una posición.

Page 23: Estructura de datos 2 corte

Eliminar datos en un vector

Page 24: Estructura de datos 2 corte

Matrices • Recordemos que una matriz o tabla a un

array bidimensional, es un conjunto de elementos del mismo tipo en el que sus elementos vienen definidos por dos subíndices, el primero referido a la fila y el segundo a la columna.

• Ejemplo: t[8,8] (ejemplo de un tablero de ajedrez)

Page 25: Estructura de datos 2 corte

Ejercicio• A los 10 arrays entregados anteriormente,

agregarle una búsqueda Secuencial, Centinela, agregar 3 datos organizados, agregar una función para eliminar un dato, y dejar organizado los datos.

Page 26: Estructura de datos 2 corte

Registros• Estructura de datos formada por datos

heterogéneos, en los que sus elementos puedan ser de tipos diferentes.

• Esta formada por elementos yuxtapuestos que contienen información relativa a un mismo ente.

• A los elementos que componen el registro se le llama campo, cada uno de los cuáles es de un determinado tipo, simple o estructurado.

Page 27: Estructura de datos 2 corte

Registros• Los campos dentro del registro aparecen

en un orden determinado y se identifican por un nombre.

• Para definir el registro es necesario especificar el nombre y tipo de cada campo.

Page 28: Estructura de datos 2 corte

Registros• Ejemplo:• Registro referido a Empleado que lo

constituye 3 campos: Nombre (cadena), Edad (entero) y porcentaje de impuestos (real).

Page 29: Estructura de datos 2 corte

Registros• Las operaciones básicas que se ejecutan

con los registros son:• Asignación del registro completo a una

variable de tipo registros.• Selección de un campo.

Page 30: Estructura de datos 2 corte

ESTRUCTURAS DINÁMICAS Y PUNTEROS

• Las variables dimensionadas, son direcciones simbólicas de posiciones de memoria, de forma que existe una relación bien determinada entre nombres de variables y posiciones de memoria durante toda la ejecución del programa.

• Aunque el contenido puede cambiar durante la ejecución, las variables por sí mismas no pueden crecer ni disminuir, durante la ejecución.

• Es importante crear métodos para adquirir posiciones de memoria adicionales, a medida que las vayamos necesitando durante la ejecución y al contrario liberarlas cuando no se necesiten.

Page 31: Estructura de datos 2 corte

ESTRUCTURAS DINÁMICAS Y PUNTEROS

• Las variables que reúnen las condiciones anteriores se llaman dinámicas y se representa con la ayuda de un nuevo tipo de dato, llamado puntero, que se define como un dato que indica la posición de memoria ocupada por otro.

Page 32: Estructura de datos 2 corte

ESTRUCTURAS DINÁMICAS Y PUNTEROS

Page 33: Estructura de datos 2 corte

ESTRUCTURAS DINÁMICAS Y PUNTEROS

• Los punteros proporcionan los enlaces de unión entre los elementos, permitiendo que, durante la ejecución del programa, las estructuras dinámicas puedan cambiar sus tamaños. En las estructuras dinámicas estos elementos, llamados nodos, son normalmente registros de al menos dos campos, donde por lo menos uno de ellos, es un puntero.

Page 34: Estructura de datos 2 corte

ESTRUCTURAS DINÁMICAS Y PUNTEROS

• Contiene información que permite localizar al siguiente – siguientes - nodo de la estructura.

Page 35: Estructura de datos 2 corte

ESTRUCTURAS DINÁMICAS Y PUNTEROS

La utilización de punteros permite que sea relativamente fácil añadir indeterminadamente nuevos datos, insertar nuevos nodos en otros ya existentes y en general modificar estas estructuras.

Page 36: Estructura de datos 2 corte

ESTRUCTURAS DINÁMICAS Y PUNTEROS

• Dependiendo de las relaciones entre los nodos de la estructura hablaremos de estructuras lineales y no lineales: si partiendo del nodo inicial es posible dirigirse sucesivamente a todos los nodos visitando cada uno una única vez diremos que es una estructura lineal; en caso de no ser posible el recorrido en estas condiciones se habla de estructura no lineal.

Page 37: Estructura de datos 2 corte