logo

Binární vyhledávací algoritmus

V tomto článku budeme diskutovat o binárním vyhledávacím algoritmu. Hledání je proces hledání určitého prvku v seznamu. Pokud je prvek v seznamu přítomen, pak se proces nazývá úspěšný a proces vrací umístění tohoto prvku. V opačném případě se hledání nazývá neúspěšné.

Linear Search a Binary Search jsou dvě oblíbené vyhledávací techniky. Zde budeme diskutovat o binárním vyhledávacím algoritmu.

Binární vyhledávání je technika vyhledávání, která efektivně funguje na seřazených seznamech. Abychom tedy prohledali prvek v nějakém seznamu pomocí techniky binárního vyhledávání, musíme zajistit, aby byl seznam seřazen.

Binární vyhledávání se řídí metodou rozdělení a dobytí, ve které je seznam rozdělen na dvě poloviny a položka je porovnávána se středním prvkem seznamu. Pokud je pak nalezena shoda, je vráceno umístění prostředního prvku. V opačném případě hledáme obě poloviny v závislosti na výsledku dosaženém během zápasu.

co znamená google

POZNÁMKA: Binární vyhledávání lze implementovat na prvky seřazeného pole. Pokud prvky seznamu nejsou uspořádány seřazeným způsobem, musíme je nejprve seřadit.

Nyní se podívejme na algoritmus binárního vyhledávání.

Algoritmus

 Binary_Search(a, lower_bound, upper_bound, val) // 'a' is the given array, 'lower_bound' is the index of the first array element, 'upper_bound' is the index of the last array element, 'val' is the value to search Step 1: set beg = lower_bound, end = upper_bound, pos = - 1 Step 2: repeat steps 3 and 4 while beg val set end = mid - 1 else set beg = mid + 1 [end of if] [end of loop] Step 5: if pos = -1 print 'value is not present in the array' [end of if] Step 6: exit 

Práce s binárním vyhledáváním

Nyní se podívejme na fungování binárního vyhledávacího algoritmu.

Abychom porozuměli fungování binárního vyhledávacího algoritmu, vezměme setříděné pole. Na příkladu bude snadné pochopit fungování binárního vyhledávání.

Existují dva způsoby, jak implementovat binární vyhledávací algoritmus -

  • Iterativní metoda
  • Rekurzivní metoda

Rekurzivní metoda binárního vyhledávání sleduje přístup rozděl a panuj.

římská číslice 1 až 100

Nechť prvky pole jsou -

Binární vyhledávací algoritmus

Nechte prvek, který chcete hledat, K = 56

K výpočtu musíme použít níže uvedený vzorec střední z pole -

 mid = (beg + end)/2 

Takže v daném poli -

žebrat = 0

konec = 8

co je monitor

střední = (0 + 8)/2 = 4. Takže 4 je střed pole.

Binární vyhledávací algoritmus
Binární vyhledávací algoritmus
Binární vyhledávací algoritmus

Nyní je prvek k hledání nalezen. Algoritmus tedy vrátí index shodného prvku.

Složitost binárního vyhledávání

Nyní se podívejme na časovou složitost binárního vyhledávání v nejlepším, průměrném a nejhorším případě. Uvidíme také prostorovou složitost binárního vyhledávání.

1. Časová složitost

Pouzdro Časová složitost
Nejlepší případ O(1)
Průměrný případ O(logn)
Nejhorší případ O(logn)
    Nejlepší složitost případu –V binárním vyhledávání nejlepší případ nastane, když je prvek, který se má hledat, nalezen v prvním porovnání, tj. když je prvek, který má být prohledán, samotný první prostřední prvek. Časová složitost binárního vyhledávání v nejlepším případě je O(1). Průměrná složitost případu –Průměrná časová složitost binárního vyhledávání je O(logn). Složitost nejhoršího případu -V binárním vyhledávání nastává nejhorší případ, kdy musíme neustále zmenšovat vyhledávací prostor, dokud nebude mít pouze jeden prvek. Nejhorší případ časové složitosti binárního vyhledávání je O(logn).

2. Prostorová složitost

Vesmírná složitost O(1)
  • Prostorová složitost binárního vyhledávání je O(1).

Implementace binárního vyhledávání

Nyní se podívejme na programy binárního vyhledávání v různých programovacích jazycích.

Program: Napište program pro implementaci binárního vyhledávání v jazyce C.

jarní architektura bot
 #include int binarySearch(int a[], int beg, int end, int val) { int mid; if(end &gt;= beg) { mid = (beg + end)/2; /* if the item to be searched is present at middle */ if(a[mid] == val) { return mid+1; } /* if the item to be searched is smaller than middle, then it can only be in left subarray */ else if(a[mid] <val) { return binarysearch(a, mid+1, end, val); } * if the item to be searched is greater than middle, then it can only in right subarray else beg, mid-1, -1; int main() a[]="{11," 14, 25, 30, 40, 41, 52, 57, 70}; given array val="40;" value n="sizeof(a)" sizeof(a[0]); size of res="binarySearch(a," 0, n-1, store result printf('the elements are - '); for (int i="0;" < n; i++) printf('%d ', a[i]); printf('
element %d', (res="=" -1) not present array'); at %d position array', res); 0; pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/10/binary-search-algorithm-5.webp" alt="Binary Search Algorithm"> <p> <strong>Program:</strong> Write a program to implement Binary search in C++.</p> <pre> #include using namespace std; int binarySearch(int a[], int beg, int end, int val) { int mid; if(end &gt;= beg) { mid = (beg + end)/2; /* if the item to be searched is present at middle */ if(a[mid] == val) { return mid+1; } /* if the item to be searched is smaller than middle, then it can only be in left subarray */ else if(a[mid] <val) { return binarysearch(a, mid+1, end, val); } * if the item to be searched is greater than middle, then it can only in right subarray else beg, mid-1, -1; int main() a[]="{10," 12, 24, 29, 39, 40, 51, 56, 70}; given array val="51;" value n="sizeof(a)" sizeof(a[0]); size of res="binarySearch(a," 0, n-1, store result cout<<'the elements are - '; for (int i="0;" < n; i++) cout< <a[i]<<' cout<<'
element '<<val; (res="=" -1) not present array'; at '<<res<<' position 0; pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/10/binary-search-algorithm-6.webp" alt="Binary Search Algorithm"> <p> <strong>Program:</strong> Write a program to implement Binary search in C#.</p> <pre> using System; class BinarySearch { static int binarySearch(int[] a, int beg, int end, int val) { int mid; if(end &gt;= beg) { mid = (beg + end)/2; if(a[mid] == val) { return mid+1; /* if the item to be searched is present at middle */ } /* if the item to be searched is smaller than middle, then it can only be in left subarray */ else if(a[mid] <val) { return binarysearch(a, mid+1, end, val); } * if the item to be searched is greater than middle, then it can only in right subarray else beg, mid-1, -1; static void main() int[] a="{9," 11, 23, 28, 38, 45, 50, 56, 70}; given array int val="70;" value n="a.Length;" size of res="binarySearch(a," 0, n-1, store result console.write('the elements are - '); for (int i="0;" < n; i++) console.write(a[i] + ' console.writeline(); console.writeline('element (res="=" -1) not present array'); at position pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/10/binary-search-algorithm-7.webp" alt="Binary Search Algorithm"> <p> <strong>Program:</strong> Write a program to implement Binary search in Java.</p> <pre> class BinarySearch { static int binarySearch(int a[], int beg, int end, int val) { int mid; if(end &gt;= beg) { mid = (beg + end)/2; if(a[mid] == val) { return mid+1; /* if the item to be searched is present at middle */ } /* if the item to be searched is smaller than middle, then it can only be in left subarray */ else if(a[mid] <val) { return binarysearch(a, mid+1, end, val); } * if the item to be searched is greater than middle, then it can only in right subarray else beg, mid-1, -1; public static void main(string args[]) int a[]="{8," 10, 22, 27, 37, 44, 49, 55, 69}; given array val="37;" value n="a.length;" size of res="binarySearch(a," 0, n-1, store result system.out.print('the elements are: '); for (int i="0;" < n; i++) system.out.print(a[i] + ' system.out.println(); system.out.println('element is: (res="=" -1) not present array'); at position pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/10/binary-search-algorithm-8.webp" alt="Binary Search Algorithm"> <p> <strong>Program:</strong> Write a program to implement Binary search in PHP.</p> <pre> = $beg) { $mid = floor(($beg + $end)/2); if($a[$mid] == $val) { return $mid+1; /* if the item to be searched is present at middle */ } /* if the item to be searched is smaller than middle, then it can only be in left subarray */ else if($a[$mid] <$val) { return binarysearch($a, $mid+1, $end, $val); } * if the item to be searched is greater than middle, then it can only in right subarray else $beg, $mid-1, -1; $a="array(7," 9, 21, 26, 36, 43, 48, 54, 68); given array $val="68;" value $n="sizeof($a);" size of $res="binarySearch($a," 0, $n-1, store result echo 'the elements are: '; for ($i="0;" $i < $n; $i++) ' , $a[$i]; <br>&apos; , &apos;Element to be searched is: &apos; , $val; if ($res == -1) echo &apos; <br>&apos; , &apos;Element is not present in the array&apos;; else echo &apos; <br>&apos; , &apos;Element is present at &apos; , $res , &apos; position of array&apos;; ?&gt; </$val)></pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/10/binary-search-algorithm-9.webp" alt="Binary Search Algorithm"> <p>So, that&apos;s all about the article. Hope the article will be helpful and informative to you.</p> <hr></val)></pre></val)></pre></val)></pre></val)>

Výstup

Binární vyhledávací algoritmus

Tak to je k článku vše. Doufám, že vám článek bude užitečný a informativní.