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