Wyszukiwanie liniowe - sekwencyjne

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.
01.// wykorzystujemy klasę Scanner z pakietu java.util
02.import java.util.*;
03. 
04./**
05. * Wyszukiwanie liniowe - sekwencyjne
06. * @author kodatnik.blogspot.com
07. */
08.public class WyszukiwanieLiniowe {
09.  
10. // metoda szukająca w podanej jako parametr tablicy wartości
11. // zwraca -1 jeśli szukana wartość nie występuje, lub indeks pierwszego wystąpienia szukanej wartości
12. public static int szukajLiniowo(int[] wejscie, int szukana) {
13.     
14.  // sprawdzamy kolejne elementy tablicy
15.  for (int i = 0; i < wejscie.length; i++) {
16.   // jeśli wartość elementu jest równa szukanej zwracamy indeks tego elementu
17.   if ( wejscie[i] == szukana) return i;
18.  }
19.  // jeśli po przejściu całej tablicy nie znaleźliśmy szukanej wartości zwracamy -1
20.  return -1;
21. }
22. 
23. // metoda wyświetla zawartość tablicy przekazanej jako parametr na ekranie
24. public static void pokazTablice(int[] wejscie) {
25.  // każdy element znajdujący się w tablicy wyświetlamy na ekranie
26.  for(int x : wejscie) System.out.print (x + " ");
27.  System.out.println ();
28. }
29. 
30. public static void main(String[] args) {
31.  // tworzymy tablicę wypełniając ją od razu danymi
32.  int[] tablica = {4, 6, 1, 2, 3, 8, 7, 9, 5};
33.   
34.  // wyświetlamy tablicę na ekranie
35.  System.out.print ("Nasza tablica: " );
36.  pokazTablice(tablica); 
37.   
38.  Scanner sc = new Scanner(System.in);
39.  System.out.print ("Jaką wartość chcesz znaleźć w tablicy: " );
40. 
41.  // pobieramy od użytkownika liczbę
42.  int liczba = sc.nextInt();   
43. 
44.  // wywołujemy metodę oraz zapisujemy to co zwróci do zmiennej wynik
45.  int wynik = szukajLiniowo(tablica, liczba);
46.   
47.  // jeśli wynik jest różny od -1 wyświetlamy informacje o indeksie, na którym została znaleziona wartość
48.  if (wynik != -1) System.out.println ("Liczba " + liczba + " została znaleziona w tablicy na indeksie: " + wynik);
49.  else System.out.println ("Liczba " + liczba + " nie została znaleziona w tablicy.");
50. }
51.}
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

obiady domowe pisze...

przystepnie podana wiedza

Prześlij komentarz

Możesz użyć niektórych tagów HTML, takich jak <b>, <i>, <u>, <a> Nie spamuj :)

Popularne posty