Wyszukiwanie liniowe
Zadanie do zrobienia:
Powiedzmy, że mamy tablicę array[] która składa się z n elementów.
I teraz naszym zadaniem jest napisać metodę, która znajdzie wybrany przez Nas element w tej tablicy.
Dane:
Powiedzmy, że mamy tablicę z takimi danymi.
Array[] = {30, 60, 80, 90, 130, 150, 210, 260, 400, 460, 20, 90, 50, 330, 220 }
Cel, Założenia:
I szukamy elementu = 50,
Czyli w odpowiedzi powinniśmy dostać indeks tego elementu = 12,
A gdy w tej tablicy będziemy szukać elementu, którego w niej nie ma np. 100
to w odpowiedzi powinniśmy dostać indeks tego elementu = -1
co będzie oznaczać, że takiego elementu nie ma w tablicy.
Rozwiązanie:
Prostym podejściem do wykonania tego zadania jest zrealizowanie wyszukiwania liniowego. Zaczynamy od skrajnego lewego elementu tablicy array[] i po kolei porównujemy element szukany z każdym elementem w tablicy array[].
Jeśli szukany element pasuje do elementu tablicy, to zwracamy indeks tego elementu.
Jeśli szukany element nie pasuje do żadnego z elementów, to zwracamy -1,
co będzie nam mówić, że szukanego elementu nie ma w tablicy.
Implementacja w kodzie C#
public static void Main()
{
int[] array = { 30, 60, 80, 90, 130, 150, 210, 260, 400, 460, 20, 90, 50, 330, 220 };
int theElementLookingFor = 50;
int result = LinearSearch(array, theElementLookingFor);
if (result == -1)
Console.WriteLine(@"Element {0} nie występuje w tablicy ", theElementLookingFor);
else
Console.WriteLine("Element {0} występuje w tablicy pod indeksem {1}", theElementLookingFor, result);
}
private static int LinearSearch(int[] array, int theElementLookingFor)
{
for (int i = 0; i < array.Length; i++)
{
if (array[i] == theElementLookingFor)
return i;
}
return -1;
}
Wyjście:
Element 50 występuje w tablicy pod indeksem 12 Element 5012 nie występuje w tablicy