二分查找法,顾名思义,是一种一分为二的查找算法,适用于已排序的数组(大数据量),快速地找到所查找数的位置。算法
源代码:数组
- static int binarySearch(int[] i, int key){
- Arrays.sort(i);
- int low = 0;
- int high = i.length - 1;
-
-
- while(low <= high){
- int mid = (low + high)>>1;
- if(key > i[mid]){
- low = mid + 1;
- } else if(key < i[mid]) {
- high = mid - 1;
- } else {
- return mid;
- }
- }
-
- return -1;
- }
原理:大数据
在数组中搜索给定Key时,先肯定是有序数组,而后定义数组的最高下标和最低下标high、low,再求出数组的中间下标mid=(low+high)>>1。而后判断,当low<=high成立时,若数组[mid]值大于key时,将数组下标的底值提升为mid+1,反之将高值下降为mid-1,如此,每次将搜索的范围减少一半,大幅提升搜索效率。spa
附图:排序
