Witam
Jestem studentem informatyki i ostatnio na laboratoriach z języka Java dostałem takie zadanie:
Posortuj tablicę.Sprawdź, czy w tablicy występuje odczytana z klawiatury wartość. Zastosuj wyszukiwanie binarne.
wzorując się na algorytmie dziel i zwyciężaj napisałem taki kod:
package lista1;
import java.util.Arrays;
import java.util.Scanner;
public class Zad9 {
public static void main(String[] args){
Scanner odczyt = new Scanner(System.in);
int[] tablicaliczb = {2,1,3,5,4,7,6,10,8,9,13,11,12,16,14,15,19,17,18,22,20,21,25,23,24,27,26,30,28,29};
int szukanaLiczba, lewo = 0, prawo = tablicaliczb.length - 1, środek = 0;
System.out.println("Podaj liczbę");
szukanaLiczba = odczyt.nextInt();
Arrays.sort(tablicaliczb);
for (int i = 0; i < tablicaliczb.length; i++){
System.out.println("tab[" +i+ "]: " +tablicaliczb[i]);
}
while (lewo <= prawo) {
środek = (lewo + prawo) / 2;
if (tablicaliczb[środek] == szukanaLiczba) {
System.out.println("szukana liczba jest w tablicy");
break;
} else if (tablicaliczb[środek] < szukanaLiczba) {
lewo = środek + 1;
} else {
prawo = środek - 1;
}
}
System.out.println("Szukanej liczby nie ma w tablicy");
}
}
Niestety nie ten program nie działa do końca tak jak chciałem.Problem polega na tym ,że gdy podam liczbę , która jest w tablicy wyświetli komunikat że jest w tablicy i jednocześnie wyświetli że nie ma jej w tablicy i nie mogę sobie poradzić z tym problemem. Czy ktoś mógłby mi pomóc? z góry dziękuję za pomoc
pozdrawiam