BUSQUEDA SECUENCIAL INTERNA

Es la forma mas simple de los metodos de busqueda, inicia el principio de la lista y va buscando el registro deseado en forma secuencial hasta que lo encuentra o hasta que ha llegado al fin de la lista y entonces termina. Este metodo es aplicable a tablas, arreglos, listas, archivos, etc. que se encuentran en desorden.

Algoritmo


1.- Empezar con el primer elemento de la lista e inicializar la variable que servira de bandera.

2.- Efectuar la busqueda mientras hay elementos en la lista y el valor de la llave no se ha encontrado.

3.- Verificar si se encontro el elemento objeto de la busqueda.

4.- fin


Consiste en recorrer y examinar cada uno de los elementos del array hasta encontrar el o los elementos buscados, o hasta que se han mirado todos los elementos del array.

for(i=j=0;i<N;i++)
   if(array[i]==elemento)
   {
      solucion[j]=i;
      j++;
    }

Este algoritmo se puede optimizar cuando el array está ordenado, en cuyo caso la condición de salida cambiaría a:

for(i=j=0;array[i]⇐elemento;i++)

o cuando sólo interesa conocer la primera ocurrencia del elemento en el array:

for(i=0;i<N;i++)
   if(array[i]==elemento)
      break;

En este último caso, cuando sólo interesa la primera posición, se puede utilizar un centinela, esto es, dar a la posición siguiente al último elemento de array el valor del elemento, para estar seguro de que se encuentra el elemento, y no tener que comprobar a cada paso si seguimos buscando dentro de los límites del array:

array[N]=elemento;
for(i=0;;i++)
   if(array[i]==elemento)
      break;

Si al acabar el bucle, i vale N es que no se encontraba el elemento. El número medio de comparaciones que hay que hacer antes de encontrar el elemento buscado es de (N+1)/2.

CODIGO

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public static int[] arreglo = new int[10];
        private void cmdLista_Click(object sender, EventArgs e)
        {
            Random num = new Random();
            int top, izq;
            top = 5; izq = 3;
            for (int i = 0; i < arreglo.Length; i++)
            {
                arreglo[i] = num.Next(100, 999);Aqui se genera el arreglo.                listBox1.Items.Add(arreglo[i]);
                top++;
                if (top >= 25)
                {
                    izq = izq + 15;
                    top = 5;
                }
            }
        }
        private void cmdBuscar_Click(object sender, EventArgs e)
        {
            int bus, j,con=0;
            bus = System.Int32.Parse(txtBuscado.Text);
            bool encontrado = false;
            j = 0;
            encontrado = false;
            while (j < arreglo.Length && encontrado == false)
            {
                if (bus == arreglo[j])
                    encontrado = true;
                else
                    j++;
            }
            if (encontrado == false)
            {
                lblMensaje.Text = ("No Esta El Elemento " + bus + " En El Arreglo");
            }
            else
            {
                con = j + 1;
                lblMensaje.Text = ("El Elemento " + bus + " Está En La Posición " + con);
            }         }
    }
} 

FORMA PRINCIPAL

Aqui podemos observar la forma principal.

:estructura_datos_csharp:busqueda_secuenal_int.jpg

En este ejemplo el arreglo estara dado aleatoriamente del 100 al 999 automaticamente.

:estructura_datos_csharp:busqueda_secuenal_int2.jpg

Despues de observar el arreglo en pantalla anotaremos el dato a buscar en la caja de texto.

:estructura_datos_csharp:busqueda_secuenal_int3.jpg

Despues presionamos la tecla buscar.

:estructura_datos_csharp:busqueda_secuenal_int4jpg.jpg

y obtenemos la posicion correcta del dato ingresado por el usuario.

La busqueda secuencial interna puede realizarse tambien para datos no visibles en este caso lo realizamos de esta manera para observar que si funciona.

Politica de Privacidad