logo

Analýza časovej a priestorovej zložitosti binárneho vyhľadávacieho algoritmu

Časová zložitosť z Binárne vyhľadávanie je O (log n) , kde n je počet prvkov v poli. V každom kroku rozdelí pole na polovicu. Priestorová zložitosť je O(1) pretože využíva konštantné množstvo priestoru navyše.

formátovať dátum na reťazec

Príklad binárneho vyhľadávacieho algoritmu



Aspekt Zložitosť
Časová zložitosť O (log n)
Priestorová zložitosť O(1)

Časová a priestorová zložitosť binárneho vyhľadávacieho algoritmu je uvedená nižšie.

Časová zložitosť Binárny vyhľadávací algoritmus :

Časová zložitosť najlepšieho prípadu binárneho vyhľadávacieho algoritmu: O(1)

Najlepší prípad je, keď je prvok na strednom indexe poľa. Na nájdenie cieľového prvku je potrebné iba jedno porovnanie. Takže najlepšia zložitosť prípadu je O(1) .

Priemerná časová zložitosť binárneho vyhľadávacieho algoritmu: O (log N)

Zvážte pole arr[] dĺžky N a prvok X byť nájdený. Môžu nastať dva prípady:



  • Prípad 1: Prvok je prítomný v poli
  • Prípad 2: Prvok nie je prítomný v poli.

Existujú N Prípad 1 a 1 Prípad2. Takže celkový počet prípadov = N+1 . Teraz si všimnite nasledovné:

  • Prvok na indexe N/2 možno nájsť v 1 porovnanie
  • Prvky s indexom N/4 a 3N/4 možno nájsť v 2 prirovnania.
  • Prvky pri indexoch N/8, 3N/8, 5N/8 a 7N/8 nájdete v 3 porovnania a pod.

Na základe toho môžeme konštatovať, že prvky, ktoré vyžadujú:

urobiť while slučku v jave
  • 1 porovnanie = 1
  • 2 porovnania = 2
  • 3 porovnania = 4
  • X prirovnania = 2 x-1 kde X patrí do sortimentu [1, logN] pretože maximálne porovnania = maximálny čas N možno znížiť na polovicu = maximálne porovnania na dosiahnutie 1. prvku = logN.

Takže totálne porovnania
= 1*(prvky vyžadujúce 1 porovnanie) + 2*(prvky vyžadujúce 2 porovnania) + . . . + logN* (prvky vyžadujúce porovnanie logN)
= 1*1 + 2*2 + 3*4 +. . . + logN * (2logN-1)
= 2pokojne* (logN – 1) + 1
= N* (logN – 1) + 1



Celkový počet prípadov = N+1 .

Preto priemerná zložitosť = ( N*(logN – 1) + 1)/N+1 = N*logN / (N+1) + 1/(N+1) . Tu je dominantný člen N*logN/(N+1), čo je približne pokojne . Priemerná zložitosť prípadu je teda O(logN)

ktorý vytvoril školu

Časová zložitosť binárneho vyhľadávacieho algoritmu v najhoršom prípade: O (log N)

Najhorší prípad bude, keď bude prvok prítomný na prvej pozícii. Ako je vidieť v priemernom prípade, porovnanie potrebné na dosiahnutie prvého prvku je pokojne . Takže časová náročnosť pre najhorší prípad je O(logN) .

Zložitosť pomocného priestoru binárneho vyhľadávacieho algoritmu

The zložitosť pomocného priestoru z Binárny vyhľadávací algoritmus je O(1) , čo znamená, že vyžaduje konštantné množstvo priestoru navyše bez ohľadu na veľkosť vstupného poľa. Je to preto, že Binary Search je iteratívny algoritmus, ktorý nevyžaduje žiadne ďalšie dátové štruktúry ani rekurziu, ktorá rastie s veľkosťou vstupu. Binárne vyhľadávanie však môžeme implementovať aj rekurzívne.