Búsqueda binaria en java

#1
Que tal bakunos, me dejaron de tarea en la prepa hacer un programa en java el cual ejecute una búsqueda binaria en un arreglo de 9 números, el profesor nos explicó el proceso y se me hizo algo complicado, así que me puse a investigar y a pensar como tendría que ir el código, y al fin me ha salido, pero tengo dudas de si el código que hice es el mas apropiado para realizar busquedas binarias o si hay formas mejores, por que una vez el profe nos dijo que un buen programador hace funcionar un programa en 30 lineas de código mientras que otro lo hace en 100 lineas.

Les dejo el código que hice


int [] datos = {3, 12, 22, 25, 28, 32, 38, 45, 56};
int numero;
int inicio = 0;
int posicion;
int fin = datos.length-1;
boolean encontrado = false;
numero = Integer.parseInt(JOptionPane.showInputDialog("inserte el numero a buscar"));

while(inicio <= fin){

posicion = (inicio + fin) / 2;

//JOptionPane.showMessageDialog(null,datos[posicion]);

if(datos[posicion] == numero){
encontrado = true;
JOptionPane.showMessageDialog(null,"el numero esta en la posición " + posicion);
inicio = inicio - datos[posicion];
}
else if (numero > datos[posicion]){
inicio = posicion +1;
}
else {
fin = posicion -1;
}

}
if(encontrado==false){
JOptionPane.showMessageDialog(null,"no se encontro el numero");
}

Que les parece mi forma de hacerlo??

y lo pregunto porque el otro dia me dejaron hacer un programa de orden por insercion y yo lo hice de una manera muy distinta a como lo hizo el profe, el lo hizo con un while y yo con un for.
 

m18

Bovino maduro
#2
esta bien pero yo lo aria así

import javax.swing.*;
public class Busqueda {
public static void main (String []args){
int [] datos = {3, 12, 22, 25, 28, 32, 38, 45, 56};
int sal=0;
int numero = Integer.parseInt(JOptionPane.showInputDialog("inserte el numero a buscar"));
for(int i=0; i<datos.length; i++){
if(numero==datos){
JOptionPane.showMessageDialog(null,"el numero esta en la posición " +(i+1));
sal=1;
}
}
if(sal==0){
JOptionPane.showMessageDialog(null,"el numero no se encuentra");
}
}

}
 
Arriba