折半查找的两种写法
2015-12-01 07:46
274 查看
//折半查找要求数组必须有序 //折半查找还可以应用于想一个有序数组中插入一个元素,原数组还有序 //可以先查找出要插入的位置下标,然后插入,该元素后的所有元素全部平行后移一个位置 class Find { public static void main(String[] args) { int []array={2,4,6,0,6,9}; // Arrays.sort(array); int key = 4; int index = binSearch(array,key); if(index!=-1) System.out.println(index); else System.out.println("查找不到!"); } public static int binSearch(int []array,int key){ int start=0; int end = array.length-1; int mid = (start+end)/2; /*写法一: while(array[mid]!=key){ if(array[mid]>key) end=mid-1; else if(array[mid]>key) start=mid+1; if(start>end) return -1; mid = (start+end)/2; } return mid; */ while(start<=end){ mid = (start+end)>>1;//相当于mid = (start+end)/2 if(key>array[mid]) start=mid+1; else if(key<array[mid]) end=mid-1; else return mid; } return -1; } }
相关文章推荐
- [Nodejs入门]第四篇,用nodejs实现一个爬虫的功能(二)
- linux sort 命令详解
- JSP/Servlet及相关技术详解
- 进制转化优化实现
- Oracle中如何插入特殊字符:& 和 ' (多种解决方案)
- 分享一个安卓人脸识别的项目
- iOS-OC-基础-NSDate常用方法
- iOS-OC-基础-NSArray常用方法
- 1.1 핵심강좌(核心讲座,核心课程)
- iOS-OC-基础-NSString常用方法
- nginx泛解析域名实现多级域名多个同时绑定
- iOS-OC-基础-NSObject常用方法
- 虚拟机下ubuntu gnome分辨率低的解决办法
- [LeetCode]Burst Balloons
- [LeetCode]Paint House II
- OSChina 周二乱弹 —— 嗑瓜子是种寂寞
- HTML基础
- 计算机视觉牛人博客和代码汇总(全)
- AngularJS Best Practices: ngRoute
- 一个互联网+应用的创意