Búsqueda. Búsqueda Secuencial Es el método de búsqueda más sencillo En un arreglo o lista ligada consiste en ir visitando cada uno de sus elementos y.

Slides:



Advertisements
Presentaciones similares
Arreglos Unidimensionales y Bidimensionales ESTRUCTURAS DE DATOS I
Advertisements

Método de ordenación por inserción
Complejidad Computacional
Diseño y análisis de algoritmos
Unidad 8 Métodos de Búsqueda
Searching data in Arrays COMP 242. Linear Search Algoritmo: Comenzando con el primer elemento, se compara cada uno con el valor a buscar y se detiene.
ORDENACION POR SELECCIÓN DIRECTA
ALGORITMOS DE ORDENAMIENTO
Paricial IV Ing. Esmeralda Elizabeth Rodríguez Rodríguez
Programación y Estructuras de Datos
LOGROS DEL PERÍODO Utiliza de forma correcta las funciones para entrada y salida de datos en c++. Utiliza los elementos básicos de un programa en c++.
INFORMATICA I Arreglos 2 CLASE 18.
INFORMATICA I Funciones CLASE 13.
CS1101X Programming Methodology
PROGRAMACION DE ESTRUCTURAS DE DATOS
Algoritmos de Búsqueda
Algoritmos Aleatorizados
ESTRUCTURA DE DATOS I ROBERTO MAL VILLALOBOS
 Funciones predefinidas en las listas Se puede definir rangos en las listas. Ejemplo: [1..10] que es la lista del 1 hasta el 10 El operador ++ concatena.
Algoritmo y Estructura de Datos I
SOBRECARGA DE FUNCIONES
METODO DE ORDENAMIENTO POR SELECCIÓN.
Análisis y programación 13051A. * Como se había comentado anteriormente, un vector es un arreglo o colección de datos donde los datos se almacenan de.
Unidad 3 Punteros.
Ejemplos en C /* Ejemplos L/E en C con printf y scanf */ #include #include main(){ int i; int i; char nombre[30]; char nombre[30]; printf ("\nIntroduce.
Copyright © 2008 SERVIR Project. All rights reserved. SERVIR Data Portal Workshop Consultas al Portal.
Ordenación, Clasificación
Listas circulares.
Material de apoyo Unidad 8 Estructura de datos
Paso de Vectores como Parámetros
1 Algoritmos Elementales de Grafos Agustín J. González ELO-320: Estructura de Datos Y Algoritmos 1er.Sem
Unidad II Aplicaciones con Arreglos en Java y C++
UNIDAD V Arreglos y Cadenas
7.  El TDA Diccionario.
Elaborado por Fernando Torre - Universidad Simón Bolívar ARREGLOS CI Computación I Universidad Simón Bolívar Dpto. de Computación y Tecnología de.
Algoritmos para Ordenar datos
Introducción al análisis de algoritmos
Algoritmos.
Ordenación y Búsquedas1UVM Ordenación y Búsqueda.
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
Estructuras de Datos Arreglos.
Algoritmos de búsqueda
BUSQUEDA SECUENCIAL Consiste en revisar elemento tras elemento hasta encontrar el dato buscado, o llegar al final del conjunto de datos disponibles. La.
Métodos de búsqueda Unidad 6.
Estructura de Datos II Equipo 4 Equipo 7 Acosta Montiel Miguel A.
Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un.
Ing. En sistemas computacionales Estructuras de datos Tema: método de ordenamiento burbuja.
Ordenación y Búsqueda.
Figure: Algoritmos Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
Arrays Arreglos Prof. Gonzalo Pastor Vectores. Definición Un vector es un tipo de variable que puede guardar muchos valores Una variable sólo puede guardar.
Clase # 2 de Matlab Presentado por: Oscar Danilo Montoya Giraldo Sistemas de Transmisión de Energía Universidad Tecnológica de Pereira Septiembre de 2014.
Análisis de Algoritmos 2
Análisis y Diseño de Algoritmos
Algoritmos de Ordenamiento y Complejidad
Quick Sort Estructura de Datos: Métodos de ordenamiento. José Alejandro Leal González Verito no m c tu nombre completo jejeje aquí va!!!
Unidad 6: Árboles.
1 Algunas ideas básicas en C++ Agustín J. González ELO-329.
Sesión 2. Este algoritmo ordena un arreglo de forma ascendente o descendente comparando la casilla de arriba con la casilla consecutiva de abajo, utiliza.
Fundamentos de Programación
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
METODOS DE BUSQUEDA EN C++ Oscar Michel Ruiz León
Ingeniería en Software Facultad de Ingeniería 2014
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
Computación I. CI-2125 Tema VII
UNIDAD DE TRABAJO Nº. 20. BÚSQUEDAS EN INTERNET INICIACIÓN.

UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
Métodos de búsqueda. Introdución Esta operación se utiliza basicamente para recuperar datos que se habian almacenado con anticipación. El resultado puede.
UNIVERSIDAD TECNOLOGICA DE MEXICO SC Lenguajes de Programación I
METODOS DE ORDENAMIENTO CHRISTIAN MICHAEL OBANDO GARCES JOAO ADRIAN BARIONUEVO.
Transcripción de la presentación:

Búsqueda

Búsqueda Secuencial Es el método de búsqueda más sencillo En un arreglo o lista ligada consiste en ir visitando cada uno de sus elementos y preguntar si es igual al elemento buscado Su orden de magnitud es en el peor de los casos O(n) siendo n el número de elementos del vector o de la lista. El peor caso se da cuando el elemento buscado no es encontrado

Búsqueda Secuencial #include #define tam 6 int b_s(int *v, int n, int dato) { int k=0; while(k<n && v[k]!= dato) k++; return k; }

void main(void) { int vec[tam]={1,3,6,2,5,9}; int indice = b_s(vec, tam, 55); if(indice == tam) cout << "El elemento no estaba"; else cout << "Está en la pos: " << indice << endl; } Búsqueda Secuencial

Búsqueda en un vector Ordenado Primera forma: Se va comparando el elemento buscado contra cada uno de los elementos del vector hasta hallarlo o encontrarse con uno mayor (o sea que no estaba) El algoritmo es el siguiente:

#include #define tam 6 int b_s_o(int *v, int n, int dato) { if(v[0] > dato) return 0; int k=1; while(v[k]<= dato && k<n) k++; return k-1; }

void main(void) { int vec[tam]={1,3,6,9,15,29}; int buscado=30; int indice = b_s_o(vec, tam, buscado); if(vec[indice]!= buscado) cout << "El elem. no estaba" << endl; else cout << "Posición: " << indice << endl; }

Segunda forma: Para acelerar el proceso de búsqueda se compara el elemento buscado X con el elemento ubicado en la mitad del arreglo V: Si V(m)=X: la búsqueda ha terminado Si V(m)<X: como todos los elementos a la izquierda de m son menores que X, se buscará ahora sólo en la zona derecha (desde m+1 hasta N). El proceso se repite V(m)>X: como todos los elementos a la derecha de m son mayores que X, se buscará ahora sólo en la zona izquierda (desde 1 hasta m-1). El proceso se repite

#include int binrec(int *v, int i, int j, int x) { int k; if(i==j) return i; k=(i+j+1)/2; if(v[k]==x) return k; if(x < v[k]) return binrec(v, i, k-1, x); else return binrec(v, k, j, x); } int busquedabin(int *v, int n, int x) { if((n==0)||(x < v[0])) return 0; return binrec(v, 0, n-1, x); }

void main(void) { int vec[10]={2,5,6,8,9,10,11,17,27,29}; int buscado=6; int indice = busquedabin(vec,10,buscado); if(vec[indice]==buscado) cout<<"Posición:" << indice <<endl; else cout <<"No estaba"<<endl; }

Hashing La idea del hashing es ejecutar alguna operación sobre el campo clave (el campo que permite identificar de manera única los diferentes elementos) y obtener un valor que es el índice del elemento en el vector (tabla) al que pertenece la clave La operación se denomina función hash o función de dispersión

colisiónEs posible que para dos claves diferentes se obtenga el mismo valor (índice) mediante la función hash, en este caso se presenta una colisión Las colisiones deben resolverse ya sea de manera abierta o cerrada (ver más adelante)

Los aspectos que hay que tener en cuenta en el hashing son: Elegir la función hash Resolver las colisiones Decidir el tamaño de la tabla

Función hash ejemplo: Método Clásico: h = clave mod T T es el tamaño de la tabla (vector) Método del Cociente Cuadrático para resolución de colisiones (hashing cerrado): i h = (residuo + cociente*i ) mod T residuo y cociente son el resultado de aplicar la i función hash clásica e i es el número de veces que se ha aplicado la fórmula de resolución. Esta fórmula se aplica hasta encontrar una celda vacía…

Hashing CerradoHashing Cerrado: Cuando se presenta una colisión se busca en la tabla (vector) otra posición vacía para ubicar la clave Hashing AbiertoHashing Abierto: Todas las claves que comparten un mismo valor (índice) al aplicarles la función hashing forman una lista ligada

Suponga que se va a manejar un grupo de máximo 10 estudiantes, la clave es la cédula, supóngase estos 4 estudiantes: índice Ced: mod 10 = 9 Ced: mod 10 = 5 Ced: mod 10 = 3 Ced: mod 10 = 5 h = ( * ) mod 10 = 5 h = ( * ) mod 10 = 2 Colisión Continúa la colisión Se soluciona la colisión i

Hashing cerrado Resolución de colisión

Hashing abierto Lista ligada en cada índice para solucionar colisiones