METODO DE BUSQUEDA
- Erick Bryan Geldres Asto
- 19 jun 2019
- 1 Min. de lectura
Búsqueda secuencial 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.
_________________________________________________________________________
#include<iostream>
#include<math.h>
using namespace std;
float leer(),metodo_busqueda();
int opcion,a,b,A[100][100],i,j,dato;
char band='F';
int main()
{
do{
cout<<"***********MENU************";
cout<<"\n1) Leer";
cout<<"\n2) Metodo de Busqueda";
cout<<"\n3) Salir";
cout<<"\n\nIngrese una Opcion: ";cin>>opcion;
system("cls");
switch(opcion)
{
case 1:{
leer();
};break;
case 2:{
metodo_busqueda();
};break;
default:{if(opcion!=3)
{cout<<"\nIngrese una opcion valida\n\n";
};break;
}
}
}while(opcion!=3);
return 0;
}
float leer()
{
cout<<"\n____Matriz[A]____";
cout<<"\nN° de filas A: ";cin>>a;
cout<<"N° de columnas A: ";cin>>b;
cout<<endl;
for(i=1;i<a+1;i++)
{for(j=1;j<b+1;j++)
{cout<<"A["<<i<<"]["<<j<<"]: ";cin>>A[i][j];
}
}
cout<<endl<<endl;
}
float metodo_busqueda()
{cout<<"\nMatriz[A]"<<endl;
for(i=1;i<a+1;i++)
{for(j=1;j<b+1;j++)
{cout<<A[i][j]<<" ";
}cout<<endl<<endl;
}
cout<<"Digite el numero a buscar: ";cin>>dato;
cout<<endl;
for(i=1;(band=='F')&&(i<a+1);i++)
{for(j=1;(band=='F')&&(j<b+1);j++)
{if(A[i][j]==dato)
{band='V';
}
}
}
if(band=='F')
{cout<<"El numero no esta en la matriz"<<endl<<endl<<endl;
}else if(band=='V')
{cout<<"El numero esta en: A["<<i<<"]["<<j<<"]"<<endl<<endl<<endl;
}
}



Komentáře