涉及二分法查找的代码和原理;

二分法的原理

将一个数组分为两半:
小于目标数的一边和大于目标数的另一边;
不断将数组拆成两部分,并判断目标数在数组的哪一边,直至无法拆分从而找到目标数在数组中的位置。

以下是关于二分法的代码:

package com.chai;

import java.util.Arrays;

public class Er {
	public static void main(String args []) {
		int arr[]={42,4,34,356,5,65,43};
		Arrays.sort(arr);//使用sort方法将数组进行排序
		System.out.println(Arrays.toString(arr));//把数组中的内容以字符串的形式打印
		int result=binarySearch(arr,0);
		System.out.print(result);
	}
	public static int binarySearch(int[]a,int key) {
		int low=0;//起点位置
		int high=a.length-1;//结束位置(从零开始数所以减一);
		int mid=0;//中间位置初始化
		while(low<=high) {//如果low等于或者大于high则说明搜索到达边界;
			mid=(low+high)/2;//除二得中间位
			if(a[mid]==key) {//如果满足条件则是目标数;
				return mid;
			}
			if(a[mid]<key) {//如果中间数小于目标数,则向右搜索
				low=mid+1;//将中间数右边赋值给low;
			}
			else if(a[mid]>key) {//如果中间数大于目标数,则向左搜索
				high=mid-1;//将中间数左边一位赋给high;
			}
		}
		return -1;//如果没有找到返回-1;
	}
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值