Wyszukiwanie liniowe polega na sprawdzaniu kolejnych elementów tablicy i porównywaniu ich z szukaną wartością. Liczba porównań w najgorszym przypadku może osiągnąć rozmiar tablicy. Chcemy napisać metodę, która w podanej jako parametr tablicy znajdzie określoną wartość. W przypadku sukcesu metoda ma zwrócić indeks znalezionego elementu, a w przypadku nie znalezienia wartość -1.
// wykorzystujemy klasę Scanner z pakietu java.util
import java.util.*;
/**
* Wyszukiwanie liniowe - sekwencyjne
* @author kodatnik.blogspot.com
*/
public class WyszukiwanieLiniowe {
// metoda szukająca w podanej jako parametr tablicy wartości
// zwraca -1 jeśli szukana wartość nie występuje, lub indeks pierwszego wystąpienia szukanej wartości
public static int szukajLiniowo(int[] wejscie, int szukana) {
// sprawdzamy kolejne elementy tablicy
for (int i = 0; i < wejscie.length; i++) {
// jeśli wartość elementu jest równa szukanej zwracamy indeks tego elementu
if ( wejscie[i] == szukana) return i;
}
// jeśli po przejściu całej tablicy nie znaleźliśmy szukanej wartości zwracamy -1
return -1;
}
// metoda wyświetla zawartość tablicy przekazanej jako parametr na ekranie
public static void pokazTablice(int[] wejscie) {
// każdy element znajdujący się w tablicy wyświetlamy na ekranie
for(int x : wejscie) System.out.print (x + " ");
System.out.println ();
}
public static void main(String[] args) {
// tworzymy tablicę wypełniając ją od razu danymi
int[] tablica = {4, 6, 1, 2, 3, 8, 7, 9, 5};
// wyświetlamy tablicę na ekranie
System.out.print ("Nasza tablica: " );
pokazTablice(tablica);
Scanner sc = new Scanner(System.in);
System.out.print ("Jaką wartość chcesz znaleźć w tablicy: " );
// pobieramy od użytkownika liczbę
int liczba = sc.nextInt();
// wywołujemy metodę oraz zapisujemy to co zwróci do zmiennej wynik
int wynik = szukajLiniowo(tablica, liczba);
// jeśli wynik jest różny od -1 wyświetlamy informacje o indeksie, na którym została znaleziona wartość
if (wynik != -1) System.out.println ("Liczba " + liczba + " została znaleziona w tablicy na indeksie: " + wynik);
else System.out.println ("Liczba " + liczba + " nie została znaleziona w tablicy.");
}
}
Uruchomiona aplikacja (wartość znaleziona):
Nasza tablica: 4 6 1 2 3 8 7 9 5
Jaką wartość chcesz znaleźć w tablicy: 7
Liczba 7 została znaleziona w tablicy na indeksie: 6
Uruchomiona aplikacja (wartość nie znaleziona):
Nasza tablica: 4 6 1 2 3 8 7 9 5
Jaką wartość chcesz znaleźć w tablicy: 12
Liczba 12 nie została znaleziona w tablicy.
1 Komentarz - Wyszukiwanie liniowe - sekwencyjne
przystepnie podana wiedza
Prześlij komentarz
Możesz użyć niektórych tagów HTML, takich jak <b>, <i>, <u>, <a> Nie spamuj :)