Recherche binaire est une technique de recherche qui fonctionne sur Approche diviser pour régner . Il est utilisé pour rechercher n’importe quel élément dans un tableau trié. Par rapport à la recherche linéaire, la recherche binaire est beaucoup plus rapide avec une complexité temporelle de O (logN), tandis que la recherche linéaire fonctionne en complexité temporelle 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!> Note: En supposant que le tableau soit trié.
diviser les chaînes c++
Voici les manières suivantes d'effectuer une recherche binaire en JavaScript :
Table des matières
Approche récursive :
- ÉTAT DE BASE : Si l'index de départ est supérieur à l'index de fin, renvoie false.
- Calculez l'indice du milieu.
- Comparez l’élément du milieu avec le nombre x. Si égal, renvoie vrai.
- Si celui-ci est supérieur, appelez la même fonction avec la terminaison index = middle-1 et répétez l'étape 1.
- Si plus petit, appelez la même fonction avec l'index de départ = middle+1 et répétez l'étape 1.
Exemple: Cet exemple montre l'utilisation de l'approche expliquée ci-dessus.
javascript
architecture de la ruche
let recursiveFunction =>function> (arr, x, start, end) {> >// Base Condition> >if> (start>fin)>return> 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!'>); }> |
>
>
tests manuelsSortir
Element found! Element not found!>
Complexité temporelle : O (logN)
Espace auxiliaire : O(1)
formateur de chaîne
Approche itérative :
Dans cette approche itérative, au lieu de la récursion, nous utilisons une boucle while, et la boucle s'exécute jusqu'à ce qu'elle atteigne la condition de base, c'est-à-dire que le début devient supérieur à la fin.
Exemple: Cet exemple montre l'utilisation de l'approche expliquée ci-dessus.
javascript
// 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!'); }> |
>
chaîne remplacer tout java
>Sortir
Element found! Element found!>
Complexité temporelle : O(logN).
Espace auxiliaire : O(1)