java二分查找实现_java二分查找实现方法实例源码

java二分查找实现方法实例源码。看了“只有10%程序员能正确实现二分查找算法“这篇文章,闲着无聊,就实现一下他所说的正确的二分算法;

其实说穿了为什么只有10%的程序员会写错,只是因为没有考虑一些意外情况罢了;

思想:

二分查找能解决问题:预排序数组的查找

1.使用泛型将二分查找的对象泛化.

2.考虑以下几种意外情况:

如果数组为null,则抛异常;

如果没有找到,则返回-1;

package com.xiazdong.binarysearch.util;

public class BinarySearchUtil {

/**

* 使用实例

* BinarySearchUtil bs = new BinarySearchUtil();

* int position = bs.binarySearch(new Integer[]{1,2,3,4,5},2);

*

* 注:

* class A implements Comparable{

* public int compareTo(A a){

* this 与 a比较

* 如果this

* 如果this==a,则返回 0

* 如果this>a ,则返回 1

* }

* }

* @param 任何实现了Comparable的类型

* @param arr 数组

* @param key 查找的值

* @return 如果找到了,返回响应位置,如果没有找到,则返回-1

*/

public static > int binarySearch(T [] arr, T key) {

if(arr==null){ //数组不能为空

throw new NullPointerException(“数组不能为空”);

}

int begin = 0;

int end = arr.length – 1;

int midden = (begin+end)/2;

while(begin<=end){

if(arr[midden].compareTo(key)==0){

return midden;

}

else if(arr[midden].compareTo(key)<0){

begin = midden+1;

}

else if(arr[midden].compareTo(key)>0){

end = midden-1;

}

midden = (begin+end)/2;

}

return -1;

}

}

本文链接地址: java二分查找实现方法实例源码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值