Maison  >  Article  >  Java  >  Comment implémenter la recherche binaire en Java

Comment implémenter la recherche binaire en Java

angryTom
angryTomoriginal
2020-02-17 15:36:264487parcourir

Comment implémenter la recherche binaire en Java

Comment implémenter la recherche binaire en Java

BinarySearch

Recherche binaire, comme son nom suggère, consiste à diviser les données en deux parties à chaque fois, puis à trouver les données souhaitées

Nous pouvons y penser de cette façon. La recherche binaire est très similaire au jeu de devinettes de prix auquel nous jouons habituellement. proposer un prix L'arbitre vous indiquera à quel point le prix est haut ou bas par rapport à la valeur réelle. S'il est inférieur, nous vous indiquerons certainement un prix légèrement plus élevé, et vice versa.

(Partage de didacticiel vidéo associé : tutoriel vidéo Java)

Pendant la recherche binaire, les données entrantes doivent être triées. Supposons qu'elles soient par ordre croissant maintenant, puis. each Comparez la valeur que vous recherchez avec la valeur du milieu (bordure gauche du tableau + (bordure droite - bordure gauche)/2). Si elle est plus grande, il recherchera les données sur le côté gauche de la valeur centrale. est plus petite, il recherchera les données du côté droit de la valeur médiane.

public class BinarySearch {
//进行二分法查找的前提是数组已经有序!
	public static int rank(int key,int nums[])
	{
		//查找范围的上下界
		int low=0;
		int high=nums.length-1;
		//未查找到的返回值
		int notFind=-1;
		while(low<=high)
		{
			//二分中点=数组左边界+(右边界-左边界)/2
			//整数类型默认取下整
			int mid=low+(high-low)/2;
			//中间值是如果大于key
			if(nums[mid]>key)
			{
				//证明key在[low,mid-1]这个区间
				//因为num[mid]已经判断过了所以下界要减一
				high=mid-1;
			}else if(nums[mid]<key)
			{
				//证明key在[mid+1,high]这个区间
				//同样判断过mid对应的值要从mid+1往后判断
				low=mid+1;
			}
			else
			{
				//查找成功
				return mid;
			}
		}
		//未成功
		return notFind;
	}
	public static void main(String[] args) {
		System.out.println("请输入数据数量:");
		Scanner scanner=new Scanner(System.in);
		int amount=scanner.nextInt();
		int num;
		int nums[]=new int[amount];
		int i=0;
		while(i<amount)
		{
			nums[i]=scanner.nextInt();
			i++;
		}
		Arrays.sort(nums);
		System.out.println("请输入想要查找的值");
		int key=scanner.nextInt();
		int answer=rank(key,nums);
		if(answer!=-1)
		{
			System.out.println("所查找的数据存在:"+nums[answer]);
		}
		else
		{
			System.out.println("您所查找的数据不存在");
		}
	}
 
}

Pour plus de tutoriels Java, veuillez faire attention à la colonne des didacticiels Java du site Web PHP chinois.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn