Le contenu de cet article concerne la recherche de tableaux bidimensionnels en JavaScript (exemples de code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Dans un tableau à deux dimensions (chaque tableau à une dimension a la même longueur), chaque ligne est triée par ordre croissant de gauche à droite, et chaque colonne est triée par ordre croissant de haut en bas. en bas. Veuillez compléter une fonction, saisir un tel tableau bidimensionnel et un entier, et déterminer si le tableau contient l'entier.
Idée de base
Le tableau bidimensionnel est ordonné, tel que les données suivantes :
1 2 3 4 5 6 7 8 9
Vous pouvez utiliser directement les nombres dans le coin inférieur gauche pour lancer la recherche :
Supérieur à : Comparer et remonter
Inférieur à : Comparer et décaler vers la droite
Idée de code
Traitez le tableau bidimensionnel comme un plan Système de coordonnées
démarre la comparaison à partir du coin inférieur gauche (0, arr.length-1) :
la valeur cible est supérieur à la valeur de coordonnée ---x coordonnée +1
la valeur cible est inférieure à la valeur de coordonnée ---y coordonnée-1
Remarque :
Dans le mode bidimensionnel tableau arri,
j représente la coordonnée x
i représente la coordonnée y
Code
function Find(target, array) { let i = array.length - 1; // y坐标 let j = 0; // x坐标 return compare(target, array, i, j); } function compare(target, array, i, j) { if (array[i] === undefined || array[i][j] === undefined) { return false; } const temp = array[i][j]; if (target === temp) { return true; } else if (target > temp) { return compare(target, array, i, j+1); } else if (target < temp) { return compare(target, array, i-1, j); } }
Extension : recherche binaire
La condition de la recherche binaire est qu'elle doit être dans l'ordre.
est comparé à la valeur médiane du tableau linéaire Si elle est petite, continuez à rechercher dans la petite séquence, et ainsi de suite de manière récursive jusqu'à ce que la même valeur soit trouvée.
function binarySearch(data, arr, start, end) { if (start > end) { return -1; } var mid = Math.floor((end + start) / 2); if (data == arr[mid]) { return mid; } else if (data < arr[mid]) { return binarySearch(data, arr, start, mid - 1); } else { return binarySearch(data, arr, mid + 1, end); } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!