二分查找已排序数组

来源:互联网 发布:java中mkar是什么意思 编辑:程序博客网 时间:2024/06/04 18:49
/** * 二分查找已排序数组比较简单,有递归方法和迭代方法,实现分别如下: * 他们的时间复杂度都为O(log n) * @author Administrator * */public class SearchSortedArray {/** * 递归法 * @param array * @param first * @param last * @param key * @return */public static int binnarySearch(int[] array, int first, int last, int key){int index = -1;int mid = (first + last)/2;if(first > last)index = -1;else if(key == array[mid])index = mid;else if (key < array[mid])index = binnarySearch(array, first, mid - 1, key);elseindex = binnarySearch(array, mid + 1, last, key);return index;}/** * 迭代方法 * @param array * @param key * @return */public static int binnaryIteratorsearch(int[] array, int key){int index = -1;int first = 0;int last = array.length - 1;while(first <= last){int mid = (first + last) / 2;if(key == array[mid]){index = mid;break;}else if(key < array[mid]){last = mid -1;}else{first = mid + 1;}}return index;}/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubint[] sortedArray = {4, 10, 50, 54, 78, 90, 100, 150, 178, 221};int key = 90;int indexInArray = binnarySearch(sortedArray, 0, sortedArray.length, key);System.out.println("the index of key in sortedArray is: " + indexInArray);int indexInArr = binnaryIteratorsearch(sortedArray, key);System.out.println("the index of key in sortedArray is: " + indexInArr);}}

0 0
原创粉丝点击