常见的算法-二分查找
介绍
二分查找,又叫折半查找,要求待查找的序列有序。
步骤:
- 先进行排序;
- 每次取中间位置的值,与待查值进行比较;
- 如果中间值大于待查值,则选择前半部分再次查找;
- 如果中间值小于待查值,则选择后半部分再次查找;
- 依次类推直到中间值与待查值相等即可,否则没有要查询的值。
线性检索和二分检索
线性检索和二分检索求 23 的位置
从动态图看出,二分检索比线性检索快。
但是如果查找1的话,反而线性检索比二分检索快,当然这种情况比较少。综合来看二分检索速度大于线性检索
代码实现
import java.util.Arrays; /** * 测试二分法查找 * 二分法适用于已经排好序的数组 * @author Administrator * */ public class TestBinarySearch { public static void main(String[] args) { int[] arr= {30,20,50,10,80,9,7,12,100,40,8}; Arrays.sort(arr); System.out.println(Arrays.toString(arr)); System.out.println(myBinarySearch(arr,40)); } public static int myBinarySearch(int[] arr,int value) { int low=0; int high=arr.length-1; while(low<=high) { int mid=(low+high)/2; if(value==arr[mid]) { return mid; } if(value>arr[mid]) { low=mid+1; } if(value<arr[mid]) { high=mid-1; } } return -1;//没有找到返回-1 } }