Wpisany przez Tomasz Lubiński,
04 września 2009 19:39
Załóżmy że mamy daną tablicę n-elementów i chcemy odnaleźć w niej element zadany element x. Niech będzie to tablica a o indeksach od 1 do n. Czyli kolejne jej elementy oznaczymy: a[1], a[2], a[3], ..., a[n-1], a[n].
By odnaleźć element x podejmiemy następujące kroki:
Operację odnajdowania elementu w tablicy możemy zapisać następującym schematem blokowym:
Algorytm ten ma złożoność obliczeniową wynoszącą O(n), co oznacza, że czas potrzebny na wyszukanie elementu tą metodą rośnie w sposób liniowy wraz z liniowym wzrostem liczby elementów w przeszukiwanej tablicy. To znaczy, że czas potrzebny na wyszukanie dwa razy większej liczby elementów wzrośnie dwukrotnie.
Niech będzie dana tablica 5-elementowa, a = {4, 6, 2, 1, 3}.
Poszukajmy w niej element x = 2.
Przeglądamy kolejne elementy tablicy:
a[1] = x? 4 nie jest równe 2, przechodzimy do kolejnego elementu,
a[2] = x? 6 nie jest równe 2, przechodzimy do kolejnego elementu,
a[3] = x? 2 jest równe 2, zatem znaleźliśmy szukany element pod indeksem 3,
Poszukajmy teraz element x = 5.
Przeglądamy kolejne elementy tablicy:
a[1] = x? 4 nie jest równe 5, przechodzimy do kolejnego elementu,
a[2] = x? 6 nie jest równe 5, przechodzimy do kolejnego elementu,
a[3] = x? 2 nie jest równe 5, przechodzimy do kolejnego elementu,
a[4] = x? 1 nie jest równe 5, przechodzimy do kolejnego elementu,
a[5] = x? 3 nie jest równe 5, przechodzimy do kolejnego elementu,
To już koniec tablicy, zatem nie ma w niej elementu równego 5.
By odnaleźć element x podejmiemy następujące kroki:
- przejdziemy po kolejnych elementach tablicy, jeżeli dany element tablicy jest równy x to odnaleźliśmy szukany element i kończymy szukanie,
- jeżeli doszliśmy do końca tablicy to oznacza że zadanego elementu x nie ma w naszej tablicy.
Operację odnajdowania elementu w tablicy możemy zapisać następującym schematem blokowym:
Algorytm ten ma złożoność obliczeniową wynoszącą O(n), co oznacza, że czas potrzebny na wyszukanie elementu tą metodą rośnie w sposób liniowy wraz z liniowym wzrostem liczby elementów w przeszukiwanej tablicy. To znaczy, że czas potrzebny na wyszukanie dwa razy większej liczby elementów wzrośnie dwukrotnie.
Przykład:
Niech będzie dana tablica 5-elementowa, a = {4, 6, 2, 1, 3}.
Poszukajmy w niej element x = 2.
Przeglądamy kolejne elementy tablicy:
a[1] = x? 4 nie jest równe 2, przechodzimy do kolejnego elementu,
a[2] = x? 6 nie jest równe 2, przechodzimy do kolejnego elementu,
a[3] = x? 2 jest równe 2, zatem znaleźliśmy szukany element pod indeksem 3,
Poszukajmy teraz element x = 5.
Przeglądamy kolejne elementy tablicy:
a[1] = x? 4 nie jest równe 5, przechodzimy do kolejnego elementu,
a[2] = x? 6 nie jest równe 5, przechodzimy do kolejnego elementu,
a[3] = x? 2 nie jest równe 5, przechodzimy do kolejnego elementu,
a[4] = x? 1 nie jest równe 5, przechodzimy do kolejnego elementu,
a[5] = x? 3 nie jest równe 5, przechodzimy do kolejnego elementu,
To już koniec tablicy, zatem nie ma w niej elementu równego 5.
Przykład w JavaScript:
Implementacje
Autor | Język programowania | Komentarz | Otwórz | Pobierz | Ocena |
Tomasz Lubiński | C# | MS Visual Studio .net | .cs | .cs | ***** / 2 |
Tomasz Lubiński | C/C++ | .cpp | .cpp | ***** / 3 | |
Albatross201 | C/C++ | C++ streams | .cpp | .cpp | ***** / 3 |
Marian | C/C++ | C++ streams, dynamiczna tablica elementów | .cpp | .cpp | ***** / 11 |
Krzysztof Sośnierz | C/C++ | C++ templates | .cpp | .cpp | ***** / 1 |
Tomasz Lubiński | Delphi/Pascal | .pas | .pas | ***** / 4 | |
Adam Chrapkowski | Haskell | .hs | .hs | ***** / 0 | |
Tomasz Lubiński | Java | .java | .java | ***** / 4 | |
Dominik Goździuk | JavaScript | .js | .js | ***** / 0 | |
Jakub Konieczny | Java_Block | .jbf | .jbf | ***** / 0 | |
Dominik Goździuk | Perl | .pl | .pl | ***** / 1 | |
Dominik Goździuk | Php | .php | .php | ***** / 0 | |
Jakub Konieczny | Python | .py | .py | ***** / 2 | |
Nikodem Solarz | Ruby | 3 metody do szukania zadanego elementu w tablicy i zwracania indeksów | .rb | .rb | ***** / 0 |
Poprawiony: 04 marca 2012 15:08