Вы находитесь на странице: 1из 1

3.

Búsqueda

La búsqueda (search en inglés) es un proceso que permite determinar si un arreglo contiene un valor que sea igual a cierto valor clave.
Existen dos técnicas de búsqueda:

- Búsqueda lineal
- Búsqueda binaria

3.1. Búsqueda Lineal

La búsqueda lineal es la técnica más simple y funciona bien con arreglos pequeños y no ordenados.
Consiste en comparar la clave de búsqueda con todos los elementos del arreglo.
Por ejemplo, buscar el valor clave = 5 en el arreglo:

X[i] = [8 3 5 7].

El procedimiento es el siguiente:

1) Inicialmente a la posición del elemento buscado (p) se le asigna un valor que no corresponde a ningún valor posible del subíndice del arreglo, tal
como, -1.

p = -1

2) Se genera un bucle que permita comparar la clave con cada uno de los elementos del arreglo:

Para i=1 Hasta n Variación 1 Hacer Si clave = X[1] Entonces p = i

3) Si el resultado de la comparación es verdadera para un valor del subíndice del arreglo, entonces este valor será la posición del elemento buscado; en el
ejemplo, p=3.
4) En el caso de que el valor inicial de p no varié, después de haberse realizado todas las comparaciones, implica que el valor buscado no existe en el
arreglo.

3.2. Búsqueda Binaria

La búsqueda binaria es la técnica de más alta velocidad y funciona eficientemente con arreglos grandes y ordenados previamente.
Consiste en eliminar, tras cada comparación, la mitad de los elementos del arreglo en los que se efectúa la búsqueda.
Primero localiza el elemento central del arreglo y luego lo compara con la clave de búsqueda.
Si son iguales, se ha encontrado dicha clave y se devuelve el subíndice de ese elemento.
De otro modo, el problema se reduce a buscar en una mitad del arreglo.

Ejemplo:
Ingresar el tamaño de un vector y cada uno de sus elementos. Así mismo, ingresar un número y en el caso de que éste se encuentre dentro del vector,
reportar la posición que ocupa. En caso contrario, reportar el mensaje: “El elemento buscado no ha sido encontrado”. Usar el método de búsqueda lineal.

Codificación:

#include <iostream.h> // Búsqueda lineal


#include <conio.h>
main() {
int n; // Número de elementos del vector
int i; // Contador de los elementos del vector
int clave; // Valor que será buscado en el arreglo
int p; // Posición del elemento buscado
int x[20]; // Elementos del vector
clrscr();
gotoxy(5,2); cout<<"Tamaño del vector";
gotoxy(30,2); cin>>n;
gotoxy(5,4); cout<<"Elementos del vector";
for(i=1;i<=n;i++) {
gotoxy(5,5+i); cout<<"Elemento N° "<<i<<" : ";
gotoxy(30,5+i); cin>>*(x+i); // Ingreso de los elementos del vector
}
clrscr();
gotoxy(5,2); cout<<"Ingrese el número a buscar: ";
gotoxy(40,2); cin>>clave; // Introducción de una clave de búsqueda
p=-1;
for(i=1;i<=n;i++) if(*(x+i)==clave) p = i; // Ubicación de la posición del número buscado
if(p!=-1) {
gotoxy(5,5); cout<<"El elemento buscado se encuentra en la posición: "<<p; }
else {
gotoxy(5,5); cout<<"El elemento buscado no ha sido encontrado"; }
getch();
}

Вам также может понравиться