【数据结构与算法】二分查找

来源:互联网 发布:coc黑水罐升级数据 编辑:程序博客网 时间:2024/05/16 00:33

二分查找 是logn的查找算法(前提已排序)

package main;/** *  *二分查找在事先排序的前提下的时间复杂度为logn,低于顺序查找 */public class Algorithm {//递归实现,思路比较清晰,如果l == h,说明查到底了,如果还不等说明没有,否则,就递归找左和右,检查左和右的结果。public static int binarySearch(int[] array ,int k){return search(array, 0, array.length - 1, k);}private static int search(int[] array ,int low, int high, int k){if (low == high) {if (array[low] == k) {return low;}else {return -1;}}else {int middle = (low + high) / 2;int l = search(array, low, middle, k);int r = search(array, middle + 1, high, k);if (l != -1) {return l;}else if (r != -1) {return r;}else {return -1;}}}//非递归实现,当l<h时,说明没有找到,返回-1,否则就进入循环体,看中间,决定找左还是右。public static int binarySearch1(int[] array ,int k){int low = 0, high = array.length - 1;while(low <= high){int m = (low + high) / 2;if(array[m] == k){return m;}else if (array[m] > k) {high = m - 1;}else {low = m + 1;}}return -1;}}






0 0
原创粉丝点击