简单算法 之 二分查找
二分查找
算法介绍
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。
算法原理
拿到数组起始下标(left)和结束下标(right)加起来除以二,就是这个数组的中间下标(mid),然后使用需要查找的这个数去与中间下标上的数字相比,比中间下标的数大,就把left 赋值为mid+1,反之就更改right 为 mid-1。重复此循环知道找到这个数为止。 一次运算排除一半的数字,就不用for循环一个一个找,效率更高,但是使用折半查找必须要是有序的。
代码块
public class DichotomyQuery { public static void main(String[] args) { int[] arr = { 1,2,3,4,5,6,7,8,9}; int left = 0,rigth = arr.length-1; int mid = 0; int q = 6; while (left<rigth){ mid = (rigth+left)/2; if(q>arr[mid]){ left = mid + 1; } if(q<arr[mid]){ rigth = mid -1; } } System.out.println(rigth); } }