二分搜索算法

来源:互联网 发布:mac口红代购价 编辑:程序博客网 时间:2024/04/30 06:48

 一、二分搜索算法的基本思想

将n个数分成个数大致相等的两半,左、右两部分,取a[ n/2 ]与x进行比较。

如果x 和 a[ n/2 ]相等,则找到x,算法结束;

如果a[ n/2 ] > x, 则继续在左半部分搜索x;

如果a[ n/2 ] < x,则继续在右半部分搜索x;

二、二分搜索算法的java实现

public class BinarySearch {/** * 实现一 * */public static int search(int[] sortedInts, int target){int middle;int left = 0, right = sortedInts.length - 1;while(left <= right){middle = (left + right) / 2;if(sortedInts[middle] == target){return middle;}else if(sortedInts[middle] > target){right = middle - 1;}else{left = middle + 1;}}return -1;}/** * 实现二 * */public static int search(int[] sortedInts, int fromIndex, int toIndex, int target){if(fromIndex > toIndex) return -1;int middle = (fromIndex + toIndex) / 2;if(sortedInts[middle] == target){return middle;}else if(sortedInts[middle] > target){return search(sortedInts, fromIndex, middle - 1, target);}else{return search(sortedInts, middle + 1, toIndex, target);}}public static void main(String[] args){int[] ints = {1, 2, 3, 5, 6, 7};int target = 5;//int index = search(ints, 0, ints.length - 1, target);int index = search(ints, target);System.out.println("index:" + index);}}
...


0 0