您的位置:首页 > 编程语言 > Java开发

Java中数组Arrays.binarySearch,快速查找数组内元素位置

2013-06-28 19:34 399 查看
转载请注明出处:http://blog.csdn.net/droyon/article/details/9199321

在数组中查找一个元素,Arrays提供了一个方便查询的方法。Arrays.binarySearch();

测试列子:

public class MainTestArray {
public static void main(String args[]){
String[] intArray = new String[]{"a","b","c","d","e","f","g","h","i","j",};
int positon = Arrays.binarySearch(intArray, "d");
System.out.println("position is:"+positon);
}
}


测试结果:

position is:3


在数组内查询一个元素,我们可以用“二分法”,上述方法其实也是用的二分法。

实现代码:

public static int binarySearch(char[] array, int startIndex, int endIndex, char value) {
checkBinarySearchBounds(startIndex, endIndex, array.length);
int lo = startIndex;
int hi = endIndex - 1;

while (lo <= hi) {
int mid = (lo + hi) >>> 1;//无符号右移
char midVal = array[mid];

if (midVal < value) {
lo = mid + 1;
} else if (midVal > value) {
hi = mid - 1;
} else {
return mid;  // value found
}
}
return ~lo;  // value not present
}

详情请查看java源代码实现。Arrays类


关注我的技术公众号,查看更多优质技术文章推送
微信扫一扫下方二维码即可关注:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息