Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ESTRUCTURA DE
DATOS
Profesor: Manuel Cruz Luna
Alumno: Eulalio Rosales Rosales
UNIDAD: 6
Desarrollo
Este tipo de búsqueda consiste en examinar, a partir del primer elemento y de uno
en uno, hasta encontrar el dato buscado o bien llegar al final de la lista que puede
estar almacenada en archivo o arreglo. En este tipo de listas los elementos
pueden o no estar clasificados, ya que se empieza a comparar de uno en uno los
elementos de la lista y no importa su orden para realizar la búsqueda, salvo para
el tiempo de ejecución.
Si el elemento que se está buscando, se encuentra al inicio de la lista, este
tiempo, sería muy corto, pero si se encuentra al final, va a tardar más y si el
elemento que se desea buscar, no se encuentra en la lista, se hizo necesario,
recorrer toda la lista, para darse cuenta que no está en ella. Y si se le aumenta a
esto, que el número de elementos en la lista puede ser del orden de cientos o
miles, va a hacer mucho más tardado su ejecución. Esta búsqueda tiene la ventaja
de tener una fácil programación de su algoritmo. El pseudocódigo del algoritmo es
el siguiente:
Posición 7 (siete).
Búsqueda binaria.
Objetivos
Solucionar problemas de búsquedas en archivos o bases de datos mediante la
implementación de algoritmos de búsqueda binaria.
Desarrollo
La búsqueda Binaria o por Bisección no representa mucha dificultad para la
programación de su algoritmo y además, es muy rápida su ejecución. Este
algoritmo requiere que los elementos de la lista, sobre la que va a actuar, estén
clasificados, ya sea en forma ascendente o descendente, cada elemento de la lista
puede tener varios campos. La lista se considera que empieza a almacenar sus
elementos en la posición cero.
Comparar el valor del elemento buscado con el central. Si resultan ser iguales, las
búsquedas terminan con éxito, indicando en qué posición se encontró y cuáles son
los datos que están en esa posición. En el caso de no ser iguales, se redefinen la
posición de alguno de los apuntadores de los extremos (LI o LS), dependiendo del
valor del elemento central, sea mayor o menor que el buscado. En ambos casos
se aplicaran nuevamente los puntos anteriores del método, desde el primer paso,
hasta que el elemento sea encontrado o bien que la lista que vaya quedando
como resultado, quede vacía.
El algoritmo de búsqueda binaria es el siguiente:
Se declaran los índices superior e inferior. El inferior en 0 y el superior con
el tamaño del arreglo menos 1.
Se calcula el centro del arreglo con la siguiente formula: centro = (superior
+ inferior)/ 2
Verificamos si el arreglo en la posición centro es igual al dato que
buscamos. Si es igual significa que encontramos el dato y retornamos
centro.
Si son diferentes verificamos si el arreglo en la posición centro es mayor al
dato que queremos buscar. Si es mayor actualizamos superior: superior =
centro - 1, si no actualizamos inferior: inferior = centro + 1.
Volvemos al paso 2. Si cuando ya no se cumpla la condición del ciclo y no se
encontró el dato retornamos -1 indicando que el dato no se encuentra en el
arreglo.
Ejemplo:
Búsqueda Binaria en C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BusquedaBinaria
{
class Busqueda
{
private int[] vector;
public void Cargar()
{
Console.WriteLine("Busqueda Binaria");
Console.WriteLine("Ingrese 10 Elementos");
string linea;
vector = new int[10];
for (int f = 0; f < vector.Length; f++)
{
Console.Write("Ingrese elemento " + (f + 1) + ": ");
linea = Console.ReadLine();
vector[f] = int.Parse(linea);
}
}
public void busqueda(int num)
{
int l = 0, h = 9;
int m = 0;
bool found = false;
while (l <= h && found == false)
{
m = (l + h) / 2;
if (vector[m] == num)
found = true;
if (vector[m] > num)
h = m - 1;
else
l = m + 1;
}
if (found == false)
{ Console.Write("\nEl elemento {0} no esta en el arreglo", num); }
else
{ Console.Write("\nEl elemento {0} esta en la posicion: {1}", num, m + 1); }
}
public void Imprimir()
{
for (int f = 0; f < vector.Length; f++)
{
Console.Write(vector[f] + " ");
}
}
static void Main(string[] args)
{
Busqueda pv = new Busqueda();
pv.Cargar();
pv.Imprimir();
Console.Write("\n\nElemento a buscar: ");
int num = int.Parse(Console.ReadLine());
pv.busqueda(num);
Console.ReadKey();
}
}
}
Al ejecutar el código muestra el siguiente resultado