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.
// 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.


0 Komentarzy - Wyszukiwanie liniowe - sekwencyjne

Prześlij komentarz

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

Popularne posty