二分查找

来源:互联网 发布:白鹤算命师 知乎 编辑:程序博客网 时间:2024/05/20 04:31

二分查找的效率比较高,时间复杂度为o(log(n)),它接受一个整数键和一个已经有序的数组作为参数,如果该键存在于数组中就返回它的索引,否则返回-1,用一个while循环判断low与high的大小,当low>high的时候跳出循环,否则用mid作为中间索引去查找key,如果key<nums[mid],那么让high变为mid-1,若key>nums[mid],low变为mid+1,如果key=nums[mid],那么说明找到了key,返回其索引mid,java程序如下:


import java.util.Arrays;public class BinarySearch {public static int rank(int[] nums, int key) {// 这里的数组nums必须是有序数组int low = 0;int high = nums.length - 1;while (low <= high) {int mid = low + (high - low) / 2;if (key < nums[mid]) {high = mid - 1;} else if (key > nums[mid]) {low = mid + 1;} elsereturn mid;}return -1;}public static void main(String[] args) {int[] nums = { 1, 6, 3, 4, 8, 2 };int key = 2;Arrays.sort(nums);int res = rank(nums, key);System.out.println(res);}}