logo

Căutare binară în JavaScript

Căutare binară este o tehnică de căutare care funcționează pe Abordarea Divide and Conquer . Este folosit pentru a căuta orice element dintr-o matrice sortată. În comparație cu căutarea liniară, binară este mult mai rapidă cu o complexitate de timp de O(logN), în timp ce căutarea liniară funcționează în complexitatea de timp O(N).

Exemple :



javafx
Input : arr[] = {1, 3, 5, 7, 8, 9}, x = 5 Output : Element found!  Input : arr[] = {1, 3, 5, 7, 8, 9}, x = 6 Output : Element not found!>

Notă: Presupunând că matricea este sortată.

Acestea sunt următoarele moduri de a efectua Căutare binară în JavaScript:

Cuprins



Abordare recursiva:

  • STARE DE BAZĂ: Dacă indexul de pornire este mai mare decât indexul final, returnează false.
  • Calculați indicele mijlociu.
  • Compară elementul din mijloc cu numărul x. Dacă egal returnează adevărat.
  • Dacă este mai mare, apelați aceeași funcție cu index final = middle-1 și repetați pasul 1.
  • Dacă este mai mic, apelați aceeași funcție cu indice de început = mijloc + 1 și repetați pasul 1.

Exemplu: Acest exemplu arată utilizarea abordării explicate mai sus.

javascript






parcurgerea în prealabil a unui arbore

let recursiveFunction =>function> (arr, x, start, end) {> >// Base Condition> >if> (start>sfârşitul)>>>false>;> >// Find the middle index> >let mid = Math.floor((start + end) / 2);> >// Compare mid with given key x> >if> (arr[mid] === x)>return> true>;> >// If element at mid is greater than x,> >// search in the left half of mid> >if> (arr[mid]>x)> >return> recursiveFunction(arr, x, start, mid - 1);> >else> >// If element at mid is smaller than x,> >// search in the right half of mid> >return> recursiveFunction(arr, x, mid + 1, end);> }> // Driver code> let arr = [1, 3, 5, 7, 8, 9];> let x = 5;> if> (recursiveFunction(arr, x, 0, arr.length - 1)) {> >console.log(>'Element found!'>);> }> else> { console.log(>'Element not found!'>); }> x = 6;> if> (recursiveFunction(arr, x, 0, arr.length - 1)) {> >console.log(>'Element found!'>);> }> else> { console.log(>'Element not found!'>); }>

amestec omogen
>

>

Ieșire

Element found! Element not found!>

Complexitatea timpului: O(logN)

Spațiu auxiliar: O(1)

Abordare iterativă:

În această abordare iterativă, în loc de recursivitate, folosim o buclă while, iar bucla rulează până când atinge condiția de bază, adică startul devine mai mare decât sfârșitul.

Exemplu: Acest exemplu arată utilizarea abordării explicate mai sus.

javascript


de ce interfața markerului în java



// Iterative function to implement Binary Search> let iterativeFunction =>function> (arr, x) {> >let start = 0, end = arr.length - 1;> >// Iterate while start not meets end> >while> (start <= end) {> >// Find the mid index> >let mid = Math.floor((start + end) / 2);> >// If element is present at> >// mid, return True> >if> (arr[mid] === x)>return> true>;> >// Else look in left or> >// right half accordingly> >else> if> (arr[mid] start = mid + 1; else end = mid - 1; } return false; } // Driver code let arr = [1, 3, 5, 7, 8, 9]; let x = 5; if (iterativeFunction(arr, x, 0, arr.length - 1)) { console.log('Element found!'); } else { console.log('Element not found!'); } x = 8; if (iterativeFunction(arr, x, 0, arr.length - 1)) { console.log('Element found!'); } else { console.log('Element not found!'); }>

este java gol

>

>

Ieșire

Element found! Element found!>

Complexitatea timpului: O(logN).

Spațiu auxiliar: O(1)