二分查找算法
Posted 奔跑的路奇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分查找算法相关的知识,希望对你有一定的参考价值。
二分查找算法
二分查找算法
二分查找的前提是该数组是有序的
二分查找的思路分析:
- 首先确定该数组的中间的下标 mid = (left + right) / 2;
- 然后让需要查找的数findValue和arr[mid]比较
- 如果findValue>arr[mid],则说明你要查找的数在mid的右边,因此需要递归的向右查找
- 如果findValue<arr[mid],则说明你要查找的数在mid的左边,因此需要递归的向左查找
- 如果findValue==arr[mid],则说明你要查找的数找到了,就返回
/**
* 二分查找的前提是该数组是有序的
*/
public class BinarySearch
int arr[] = 1,4,5,7,100,185;
int i = binarySearch(arr, 0, arr.length - 1, 185);
System.out.println("索引为:"+i);
/**
*
* @param arr:数组
* @param left:左边的索引
* @param right:右边的索引
* @param findVal:要查找的值
* @return
*/
public static int binarySearch(int[] arr,int left,int right,int findVal)
//当left > right时 ,说明递归整个数组完了也没有找到
if (left > right)
return -1;
//中间的索引
int mid = (left + right) / 2;
//中间值
int midVal = arr[mid];
if (findVal > midVal)
//向右递归
return binarySearch(arr, mid+1 , right, findVal);
else if (findVal < midVal)
//向左递归
return binarySearch(arr, left, mid-1, findVal);
else
return mid;//找到了
以上是关于二分查找算法的主要内容,如果未能解决你的问题,请参考以下文章