赞
踩
- public static void main(String[] args) {
-
- int arr[] = {1,2,3,4,5,6,7,8,9,10};
- System.out.println(binarySearch(arr, 23));
- }
- public static int binarySearch(int[] arr,int key){
- //数组查询区间开始索引
- int head = 0;
- //数组查询区间结尾索引
- int end = arr.length - 1;
- //开始索引小于结尾索引,当开始索引大于于结尾索引时循环结束,则表明该元素不存在。
- while (head <= end) {
- //求要查找的数组区间的中间元素的索引
- int mid = (head + end) / 2;
- if (arr[mid] > key) {
- //如果这次查询的区间中间元素值大于要查找的值,
- //则下一次循环查询区间的结尾等于这次中间元素值的索引-1,往左缩小查询区间。
- end = mid-1;
- } else if (arr[mid] < key) {
- //如果这次查询的区间中间元素值小于要查找的值,
- //则下一次循环查询区间的开头等于这次中间元素值的索引+1,往右缩小查询区间。
- head = mid+1;
- } else {
- //存在则返回元素索引
- return mid;
- }
- }
- //不存在返回-1
- return -1;
- }
运行效果:当查找 2 时,查找到后返回该元素的索引。
运行效果:当查找 11 时,因为该元素不存在数组里,则返回-1。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。