Búsqueda en Listas

Dentro de una organizaación existe muchaa información que tiene que ser manipulada, la cuál se almacena de acuerdo a su categoría dentro de arreglos y registros, el proceso de encontrar a un elemento específico dentro de un aarreglo se le llama búsqueda.

Existen dos técnicas de búsqueda la lineal o secuencial es la más sencilla y la búsqueda binaria o dicotómica la más eficiente

Búsqueda secuencial

Se busca un elemento dentro de una lista o vector, se exploran en secuencia, uno después de otro. Para esto se compara cada elemento del arreglo con el número buscado, este tipo de búsqueda es funcional en listas pequeñas y en no ordenados.

Búsqueda Binaria

Se puede aplicar a cualquier lista, siempre y cuando esté ordenada. Se sitúa la lectura en el centro de la lista y se comprueba si el elemento a buscar coincide con el elemento central, de no ser así, el valor buscado puede estar en la mitad superior o inferior del elemento central de la lista, esto permite acortar el tiempo de búsqueda.

Ejercicio:

Elabora los códigos que realizan estas dos maneras diferentes de buscar información. Comentalos y publicalos en tu sitio Web

Listas

#include<iostream.h>

#include<conio.h>

#include<stdio.h>

struct lista

{

int info;

lista *der,*izq;

};

void crea_final(lista *p, lista *f);

void recorrecursivo1(lista *p);

void recorrecursivo2(lista *f);

void main()

{

lista *ptr = NULL,*f = NULL;

clrscr();

crea_final(ptr,f);

cout<<"null";

getch();

}

void crea_final(lista *p, lista *f)

{

lista *q;

p=new lista;

cout<<"teclea un numero entero"<<endl;

cin>>p->info;

p->der=NULL;

p->izq=NULL;

f=p;

q=new lista;

cout<<"teclea un numero entero"<<endl;

while (cin>>q->info)

{

q->izq=f;

f->der=q;

f=q;

q->der=NULL;

cout<<"teclea un numero entero"<<endl;

q=new lista;

}

cout<<"Recorrido de izquierda a derecha\n"<<endl;

recorrecursivo1(p);

cout<<"\n\nRecorrido de derecha a izquierda\n"<<endl;

recorrecursivo2(f);

}

void recorrecursivo1(lista *p)

{

if(p!=NULL)

{

cout<<p->info<<"->";

recorrecursivo1(p->der);

}

}

void recorrecursivo2(lista *q)

{

if(q!=NULL)

{

cout<<q->info<<"->";

recorrecursivo2(q->izq);

}

}

virj