【代码积累-2】binary search
来源:互联网 发布:提取背景音乐的软件 编辑:程序博客网 时间:2024/04/26 11:51
import java.util.Arrays;public class Test {int test[] = {49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,101,56,17,18,23,34,15,35,25,53,51,111,222,333,444,546,768};public void test() {//排序Arrays.sort(test);//二分查找int result = binarySearch1(test,12);System.out.println("index = "+result);}public int binarySearch0(int[] a,int key) {return binarySearchImpl0(a,key,0,a.length-1);}public int binarySearch1(int[] a,int key) {return binarySearchImpl1(a,key,0,a.length-1);}/*先用递归实现*/private int binarySearchImpl0(int[] a,int key,int lowindex,int highindex) {/*int[] a是经过排序的数组,通常是升序排列,如果key超出范围,直接返回,函数只处理在范围内的查找不到的异常*/if( key > a[highindex] || key < a[lowindex] ) {return -1;}if( lowindex > highindex ) {return -1;}int midindex = (lowindex+highindex)>>>1;if( key < a[midindex] ) {return binarySearchImpl0(a,key,lowindex,midindex-1);} else if( key > a[midindex] ) {return binarySearchImpl0(a, key, midindex+1, highindex);} else {return midindex;}/*小结: * 1、递归法的好处是函数逻辑结构简单 * 2、缺点是如果数组体量很大,可能会造成函数栈溢出 * 制造栈溢出的方法:1、申请一个大的local变量 2、深度递归*/}/*使用循环实现*/private int binarySearchImpl1(int[] a,int key,int lowindex,int highindex) {int midindex = 0;int low = lowindex;int high = highindex;/*循环截止条件:lowindex > highindex*/while( low <= high ) {midindex = (low+high) >>>1;if( key < a[midindex] ) {high = --midindex;} else if( key > a[midindex] ) {low = ++midindex;} else {return midindex;}}return -1;}}
阅读全文
0 0
- 【代码积累-2】binary search
- binary search的积累
- 从binary search看如何写代码
- Binary Search 《二分查找》 2
- Unique Binary Search Trees 2
- Searching: Uniform Binary Search-2
- Binary search
- Binary Search
- Binary Search
- binary search
- binary search
- Binary Search
- binary search
- binary search
- binary search
- binary search
- binary search
- binary search
- windows中的java项目访问虚拟机中的redis
- Android TP驱动之(三)input
- Android新特性介绍,ConstraintLayout完全解析
- 四、2、JavaScript的垃圾收集
- python基础 列表(2)
- 【代码积累-2】binary search
- USACO-Section1.3 crypt1[DFS]
- 应用系统负载分析与磁盘容量预测
- cookie常用方法
- cpp拷贝构造函数
- 【代码积累-3】bubble sort
- sax解析中事件处理器要注意的问题
- AndroidStudio下的JNI
- 关于cocoapods出错的注意事项