Los algoritmos de búsquedas secuenciales , nos facilita la forma de hacer consultas ya sea en una tabla de una base de datos como en un vector o matriz de datos.
Este tipo de búsqueda tiene mas puntos en contra que a favor porque en un vector de N posiciones este algoritmo va a buscar posición a posicion hasta dar con el dato solicitado y en el caso de que no exista pues también va a recorrer todo el arreglo.
Lo bueno de este tipo de busqueda es que es muy sencillo de implementar y no se tiene que ordenar el vector.
Si tenemos un vector ya definido con los siguientes datos:
["aarona","aashta","abelarda","abelia","abigail","a bril"] , todos de tipo String y queremos saber si ya existe el nombre : "Abigail" en nuestro vector entonces tenemos que hacer lo siguiente:
public class BSecuencial {
public static void main(String[] args)throws IOException {
BufferedReader entrada = new BufferedReader (new InputStreamReader(System.in));
int encontrados=0;
String [] VectorNombres = {"Aarona","Aashta","Abelarda","Abelia","Abigail ",
"Abril"};
System.out.print("Digite el nombre que desea buscar: ");
String nombre = entrada.readLine();
// entrada de dato a buscar
for (int i=0; i<VectorNombres.length;i++){
if(nombre.equalsIgnoreCase(VectorNombres[i])){
JOptionPane.showMessageDialog(null,"Elemento encontrado "+VectorNombres[i],"Encontrado",
JOptionPane.INFORMATION_MESSAGE);
encontrados++;
continue;
}
}
if(encontrados == 1 ){
System.out.println("Fin de busqueda, encontrado "+encontrados+" elemento igual");
}else{
System.out.println("Fin de busqueda, encontrados "+encontrados+" elementos iguales");
}
}
import java.util.*;
class programa8
{ public static void main(String[]args)
{
int a[],n,n1,indice;
Scanner sc=new Scanner(System.in);
System.out.print("Ingresa tamaño del arreglo: ");
n=sc.nextInt();
a=new int[n];
a=inicializa(n);
muestra(a);
System.out.print("Ingresa numero a buscar: ");
n1=sc.nextInt();
indice=busquedaLineal(a,n1);
if(indice==-1)
{
System.out.println("tu número no esta en la lista");
}
else
{
System.out.println("tu número esta en el indice: "+indice);
}
}
static int[] inicializa(int n)
{
int i,j,a[]=new int[n];
for(i=0;i<n;i++)
{
a[i]=randomxy(1,50);
}
return a;
}
static int busquedaLineal(int a[],int n)
{
int i;
for (i=0;i<a.length;i++)
{
if (a[i] == n)
{
return i+1;
}
}
return -1;
}
static void muestra(int a[])
{
int n=a.length;
for(int i=0;i<n;i++)
{
System.out.print(a[i]+" ");
}
System.out.print("nn");
}
static int randomxy(int x,int y)
{
int ran=(int) (Math.floor(Math.random()*(y-x+1))+x);
return ran;
}
El siguiente programa desarrollado en el lenguaje de programación Java cumple con los siguientes requerimientos.
• Crea un menú de opciones (INSERTAR, CONSULTAR, ELIMINAR Y FINALIZAR).
• INSERTAR: almacena el nombre de una personas en vectores estáticos tipo String de tamaño 50.
• CONSULTAR: Utilizando el algoritmo de búsqueda secuencial pide el nombre y si lo encuentra imprime un mensaje de encontrado, en caso contrario un mensaje de no localizado.
• ELIMINAR: Utilizando el algoritmo de búsqueda secuencial pide el nombre y si lo encuentra imprime un mensaje de encontrado y elimina el nombre ajustando el vector para no dejar espacios en blanco, en caso contrario un mensaje de no localizado.
• FINALIZAR: Imprime los nombres almacenado y sale del programa.
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class BusquedaSecuencial {
static BufferedReader br = null;
static String N= "";
static int n=0;
static String[] Nombre = new String[50];
static String[] APaterno = new String[50];
static String[] AMaterno = new String[50];
public static void main (String args[]){
br = new BufferedReader(new InputStreamReader(System.in));
do{
menu();
}while(Integer.parseInt(N)!=4);
}
public static void menu(){
do{
System.out.println("Selecciona una de las opciones del menú: \n "
+ "1- INSERTAR \n "
+ "2- CONSULTAR "
+ "\n 3- ELIMINAR \n "
+ "4- FINALIZAR");
try{
N = br.readLine();
}catch(Exception e){
e.printStackTrace();
}
}while(!esEntero(N) || conversor(N)<=0 || conversor(N)>=5 );
switch(Integer.parseInt(N)){
case 1:
insertar();
break;
case 2:
consultar();
break;
case 3:
eliminar();
break;
case 4:
imprimir();
break;
}
}
public static void consultar(){
if(n>0){
String nombre="";
int eureka=0;
try{
System.out.println("Ingresa el Nombre : ");
nombre = br.readLine();
}catch(Exception e){
e.printStackTrace();
}
for(int i=0; i<n; i++){
if(Nombre[i].equals(nombre)){
eureka=1;
}
}
if(eureka==1){
System.out.println("Nombre encontrado!!!!!. ");
}else{
System.out.println("Nombre NO localizado!!!!!. ");
}
}
else{
System.out.println("No hay elementos en la lista. ");
}
}
public static boolean esEntero(String cad) {
for(int i = 0; i<cad.length(); i++)
if( !Character.isDigit(cad.charAt(i)) )
return false;
return true;
}
public static int conversor(String x){
int valor=0;
try{
valor= Integer.parseInt(x);
}catch(NumberFormatException e){
System.out.println("Valor invalido");
}
return valor;
}
public static void insertar(){
if(n<50){
System.out.println("Leyendo datos de la persona: " + (n+1));
try{
System.out.println("Ingresa el Apellido Paterno: ");
APaterno[n] = br.readLine();
}catch(Exception e){
e.printStackTrace();
}
try{
System.out.println("Ingresa el Apellido Materno: ");
AMaterno[n] = br.readLine();
}catch(Exception e){
e.printStackTrace();
}
try{
System.out.println("Ingresa el nombre: ");
Nombre[n] = br.readLine();
}catch(Exception e){
e.printStackTrace();
}
n++;
}else{
System.out.println("El vector esta lleno, elimina personas para poder insertar");
}
}
public static void eliminar(){
String nombre="";
int encontrados=0;
if(n>0){
try{
System.out.println("Ingresa el Nombre : ");
nombre = br.readLine();
}catch(Exception e){
e.printStackTrace();
}
for(int i=0; i<n; i++){
if(Nombre[i].equals(nombre)){
encontrados++;
for(int j=i; j<n; j++){
Nombre[j]=Nombre[j+1];
APaterno[j]=APaterno[j+1];
AMaterno[j]=AMaterno[j+1];
}
i--;
n--;
}
}
if(encontrados>0){
System.out.println("Nombre encontrado, procediendo a eliminar!!!!!. ");
}else{
System.out.println("Nombre NO localizado!!!!!. ");
}
}else{
System.out.println("No hay elementos a eliminar.");
}
}
public static void imprimir(){
if(n>0){
System.out.println("Apellido paterno Apellido Materno Nombre");
for(int i=0; i<n; i++){
System.out.print(i+1 + ".- " + APaterno[i] + "\t");
System.out.print(AMaterno [i] + "\t ");
System.out.print(Nombre [i] + ".");
System.out.println();
}
}
}
}