logo

Cerca binària en JavaScript

Cerca binària és una tècnica de cerca que funciona en el Enfocament Divide and Conquer . S'utilitza per cercar qualsevol element d'una matriu ordenada. En comparació amb la cerca lineal, la cerca binària és molt més ràpida amb una complexitat temporal de O(logN), mentre que la cerca lineal funciona en complexitat temporal O(N).

Exemples :



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!>

Nota: Suposant que la matriu està ordenada.

ordre touch a linux

Aquestes són les maneres següents de fer cerca binària en JavaScript:

Taula de contingut



Enfocament recursiu:

  • CONDICIÓ BASE: Si l'índex inicial és més gran que l'índex final, retorna fals.
  • Calcula l'índex mitjà.
  • Compara l'element central amb el nombre x. Si és igual retorna cert.
  • Si és més gran, crida a la mateixa funció amb índex final = mig-1 i repeteix el pas 1.
  • Si és petit, crida a la mateixa funció amb índex inicial = mig+1 i repeteix el pas 1.

Exemple: Aquest exemple mostra l'ús de l'enfocament explicat anteriorment.

javascript






let recursiveFunction =>function> (arr, x, start, end) {> >// Base Condition> >if> (start>final)>>>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!'>); }>

>

fer que l'script sigui executable
>

Sortida

Element found! Element not found!>

Complexitat temporal: O(logN)

Espai auxiliar: O(1)

Enfocament iteratiu:

En aquest enfocament iteratiu, en comptes de la recursivitat, fem servir un bucle while, i el bucle s'executa fins que arriba a la condició base, és a dir, l'inici esdevé més gran que el final.

Exemple: Aquest exemple mostra l'ús de l'enfocament explicat anteriorment.

javascript

per a cada mecanografia




// 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!'); }>

pendent indefinida

>

>

Sortida

Element found! Element found!>

Complexitat temporal: O (logN).

Espai auxiliar: O(1)