A partir de Java - Unité 6 tableaux - Recherche binaire
rappelez-vous jouer le jeu « Devinez un numéro ». où les réponses à l'énoncé « Je pense à un nombre compris entre 1 et 100 » sont « trop élevé », « trop bas », ou « You Got It! »? Une stratégie qui est souvent utilisée lors de la lecture de ce jeu est de diviser les intervalles entre la conjecture et les extrémités de la plage dans la moitié. Cette stratégie vous aide à affiner rapidement le nombre désiré.
Lors de la recherche d'un tableau, le processus de recherche binaire utilise ce même concept d'intervalles de séparation en deux comme un moyen de trouver la valeur « clé » le plus rapidement possible.
Si le tableau qui contient vos données dans l'ordre (croissant ou décroissant), vous pouvez rechercher l'élément clé beaucoup plus rapidement à l'aide d'un algorithme de recherche binaire ( « diviser et conquérir »).
Considérez le tableau suivant des entiers:
Tableau d'entiers, num nommé. disposé dans « l'ordre croissant » !!
Nous allons la recherche de l'entier 77:
Tout d'abord, pour le milieu du réseau en ajoutant l'indice de matrice de la première valeur de l'indice de la dernière valeur et en divisant par deux: (0 + 9) / 2 = 4 division entière est utilisée pour arriver à la quatrième indice comme la milieu. (Le milieu mathématique réelle serait entre les 4ème et 5ème subscripts mais nous devons travailler avec entiers indices.)Le 5 détient l'entier indice 63, qui vient avant 77, donc nous avons de nouveau subdivisent
(6 + 6) / 2 = 6 et le sixième indice détient le nombre entier 77.
Rappelez-vous: Vous devez commencer par un tableau pré-triés.
import java.io. *;
importation BreezyGUI *.
BinarySearchExample public class
public static void main (String [] args)
clé int = 77;
int [] num = new int [10];
// Remplir le tableau
pour (int i = 0; i < 10; i++)
num [i] = Console.readInt ( "Entrez entier:");
// La méthode de recherche binaire
binarySearch (num, 0, 9, clé);
>
méthode de recherche binaire:
binarySearch (num, 0, 9, clé);
Les arguments / paramètres sont les suivants:
tableau - le nom d'un tableau trié
limiteinf - indice (indice) du premier
élément de recherche, tableau [0]
limitesup - indice (index) de
dernier élément de recherche, tableau [9]
clé. point nous voulons trouver.
// Recherche binaire Méthode
// Cette méthode accepte un tableau prétriés, l'indice de l'élément de départ pour la recherche,
// l'indice de l'élément de fin de la recherche,
// et le numéro de clé pour que nous recherchons.
public static void binarySearch (tableau int [], int limiteinf, int limitesup, clé int)
la position int;
int comparisonCount = 1; // comptage du nombre de comparaisons (en option)
// Pour commencer, trouver l'indice de la position médiane.
position = (limiteinf + limitesup) / 2;