《算法图解》读书笔记 第一章:算法介绍

以下均为读书笔记

二分查找  介绍:

  假设你要在《新华字典》里找一个字,比如’睿‘,可能他信手翻开了字母M的某个页面,这时他知道睿的拼音首字母r在M的后面,于是他又从后一半里随便翻开一页,同上最后找到’睿‘字。可能我们都有过这样的经历,查字典(假设你不喜欢用部首,或者你根本在用英文词典)的时候先信手翻开一页,再根据这一页来判断是继续往前翻还是向后翻,往往是不断地缩小搜索范围。这就是我现在要讲的 二分查找

  二分查找的原理很简单,哪怕是小孩子也能无师自通,不断成倍数的缩小搜索范围,每次判断当前位置和预期位置的次序来决定搜索方向,这就引出了另外一个问题------被搜索的序列必须要遵循某种顺序排列,当然,这就是排序的问题了。

  现在我们给出二分查找的java实现案例,输入一个int类型数组和一个int类型数,如果一个x在arr数组中,则返回x的索引(数组索引从0开始);如果不在,就返回-1。

    

 1 public static void main(String[] args) {
 2         int[] arr= {1,3,5,7,9,11,13,15,17,19};
 3         System.out.println(binary_search(arr, 17));
 4     }
 5     public static int binary_search(int arr[], int item) {   
 6         int mid = arr.length / 2;   
 7         if (item == arr[mid]) {   
 8             return mid;   
 9         } 
10          
11         int start = 0;   
12         int end = arr.length - 1;   
13         while (start <= end) {   
14             mid = (end - start) / 2 + start;   
15             if (item < arr[mid]) {   
16                end = mid - 1;   
17             }else if (item > arr[mid]){   
18                  start = mid + 1;   
19             }else{   
20                 return mid;   
21             }   
22         }   
23         return -1;   
24     }

猜你喜欢

转载自www.cnblogs.com/kiritozhj/p/9170793.html