Warning
This page is located in archive.

Lineární vyhledávání

Princip

Lineární vyhledávání (známé také jako sekvenční vyhledávání) je vyhledávací algoritmus vhodný k nalezení určité hodnoty v seznamu(poli). Funguje na principu procházení všech prvků seznamu(pole).

V případě náhodného rozložení je průměrně potřeba n/2 porovnání. Nejlepší případ nastane tehdy, pokud se hledaná hodnota nachází na prvním místě. Je tedy potřeba pouze jedno porovnání. Nejhorší případ nastane tehdy, když se hodnota v seznamu(poli) vůbec nevyskytuje, eventuelně je na konci seznamu(pole). Pak je potřeba n porovnání.

Výhodou lineárního vyhledávání, oproti efektivnějším algoritmům jako například binární vyhledávání, je možnost použití i na neuspořádaných seznamech(polích).

Složitost

Lineární vyhledávání má časovou složitost O(n).

Příklady

Napište metodu, která určí, zda se ve stupním poli nachází hledaný prvek a vratí počet prvků.

static int Hledej (int[] pole, int hledani)
    {
        int prvku = 0;                      //pocatecni hodnota 
        int i = 0;                          //index
        for(i=0;i<pole.length;i++)          //cyklus pro hledani
        {
           if (pole[i]==hledani) prvku++;   //nasel se a pricitame
        }
        return prvku;
    }

Napište metodu, která určí, zda se ve vstupním poli nachází hledaný prvek a vrátí pozici prvního z nich.

static int Hledej (int[] pole, int hledani)
    {
        int pozice = -1;            //pocatecni hodnota - i pro pripadne nenalezeni
        int i = 0;                  //index
        while (i<pole.length)       //cyklus pro hledani
        {
            if (pole[i]==hledani)   // naslo se?
            {
                pozice=i+1;         //kde je
                break;              //uz nemusime dale hledat
            }
            i++;
        }
        return pozice;
    }

courses/a0b36pri/tutorials/10/linearni_vyhledavani.txt · Last modified: 2015/01/16 21:04 (external edit)