Saludos
a todos.
Antes
de iniciar, debemos familiarizarnos con el concepto de arreglo, he aquí la
definición por Wikipedia:
Arreglo: Es una zona de almacenamiento continuo, que contiene
una serie de elementos del mismo tipo.
Para
efectos de ésta explicación visualice el arreglo como una serie de cajas unidas
donde podemos almacenar datos del mismo tipo, los
arreglos están indexados con una serie de números de van de
menor a mayor y que sirven para hacer referencia a cada uno de las cajas dentro
del arreglo, en java esta indices comienzan en 0.

Los
arreglos y en general las estructuras de datos nos permiten almacenar
informacion o datos, pero ahora nos seria de utilidad hallar la forma de
encontrar los datos que almacenamos en las mismas, para tal fin se han
diseñados algoritmo de búsquedas.
Como
el titulo lo sugiere trataremos el método de búsqueda secuencial.
Los
dos elementos fundamentales a tener en cuentas son: un arreglo con datos objeto
de la búsqueda y un elemento o criterio de búsqueda.
El método de búsqueda secuencial consiste en ir comparando el elemento o criterio de búsqueda con cada uno de los elementos en el arreglo, esto se hace recorriendo el arreglo y deteniéndose en cada elemento y hacer la comparación, en caso de ser verdadera la comparación, guardar la posición el elemento o dato.
He aquí el código:
public int busquedaSecuencial(int []arreglo,int
dato){
int posicion = -1;
for(int i = 0; i < arreglo.length; i++){//recorremos todo el arreglo
if(arreglo[i] == dato){//comparamos el
elemento en el arreglo con el buscado
posicion = i;//Si es verdadero guardamos la
posicion
break;//Para el ciclo
}
}
return posicion;
}
Este método nos
halla la posición del elemento o dato buscado pero en su primero
coincidencia, si queremos que nos halle la posición de la ultima
coincidencia, lo único que tenemos que hacer es eliminar la linea
donde aparece 'break'.
Si
el resultado del método anterior es -1, significa que el elemento no
se encuentra en el arreglo.
Ahora
cabe la pregunta, ¿y si el elemento que deseo buscar aparece varias veces en el
arreglo y yo deseo conocer cada una de estas posiciones, como hago?
Lo
que hacemos es deshacernos de la linea 'break' para que el vector sea
recorrido en su totalidad, y de alguna forma ir almacenando cada una de las
posiciones resultantes de las comparaciones verdaderas.
He aquí el código:
public String
busquedaSecuencial2(int []arreglo,int valor){
String posicion = "";
for(int i = 0; i < arreglo.length; i++){
if(arreglo[i]
== valor){
posicion += i+",";
}
}
return posicion;
}
Aunque
pude haber usado un 'ArrayList' o 'Vector' preferí usar un 'String' porque
asumo que el lector de éste articulo está mas familiarizado con
esta ultima que con los dos primeros términos.
Como
siempre esperando que lo escrito les sea de utilidad.
No hay comentarios:
Publicar un comentario