算法 - 二分查找

二分查找算法:二分查找法是一个比较高效的查找数组中某一个元素对应的索引的方法。(一个有序没有重复的int数组,找出某一个元素对应的索引)

二分查找法满足2个条件:

1.目标数组必须是有序的

2.没有重复元素的数组


代码实现如下:

 1 package com.yunstars.binarysearch;
 2 
 3 /**
 4  * Created by zhangshengjian on 2016/7/13.
 5  * 二分查找算法
 6  */
 7 public class BinarySearch {
 8 
 9     public static int rank(int key, int[] a) {
10         int lo = 0;//第一个数的索引
11         int hi = a.length - 1;//最后一个数的索引
12         while(lo <= hi) {
13             int mid = lo + (hi - lo) / 2;//中间值索引
14             if(key < a[mid]) {//如果要查找的值小于中间索引对应的值
15                 hi = mid - 1;//最后一个索引值变为中间索引减1
16             } else if(key > a[mid]) {//如果要查找的值大于中间索引
17                 lo = mid + 1;//第一个数的索引值变为中间索引加1
18             } else {//如果要查找的值等于中间索引对应的值
19                 return mid;//返回中间索引值即返回要查找的值的索引
20             }
21         }
22         return -1;
23     }
24 
25     public static void main(String[] args) {
26         int[] whiteList = {1,2,3,4,5,6,7,8,9,10};
27         int index = rank(5, whiteList);
28         System.out.print(index);
29     }
30 }

欢迎各位观众老爷们打赏宝宝,宝宝会继续努力!(扫描支付宝二维码,打赏宝宝,一切皆因为有你的支持!么么哒)

 

posted @ 2016-07-21 10:11  坚持到放弃  阅读(265)  评论(0编辑  收藏  举报