Java 实现二分查找\折半查找
2014-09-12 15:44
183 查看
二分查找又称折半查找,优点是比较次数少,查找速度快;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。
该算法要求:
1、 必须采用顺序存储结构。
2、 必须按关键字大小有序排列。
该算法时间复杂度最坏为:O(logn)
注意点有mid、low、high
其Java实现代码如下(该代码有缺陷,只是基本实现,有待完善):
public
class BinarySearch {
/**
* @param
args
*/
public
static void main(String[]
args) {
// TODO Auto-generatedmethod stub
int[] src = {1,3,5,7,8,9};
System.out.println(binarySearch(src,3));
}
private
static int binarySearch(int[] src,
int i) {
int low=0;
int high=src.length-1;
System.out.println("low is"+low);
System.out.println("high is"+high);
while(low<=high){
int mid = (low+high)/2;
System.out.println("mid is"+mid);
if(src[mid]==i){
return mid;
}else
if(i<src[mid]){
high=mid-1;
}else{
low=mid+1;
}
}
return -1;
}
}
该算法要求:
1、 必须采用顺序存储结构。
2、 必须按关键字大小有序排列。
该算法时间复杂度最坏为:O(logn)
注意点有mid、low、high
其Java实现代码如下(该代码有缺陷,只是基本实现,有待完善):
public
class BinarySearch {
/**
* @param
args
*/
public
static void main(String[]
args) {
// TODO Auto-generatedmethod stub
int[] src = {1,3,5,7,8,9};
System.out.println(binarySearch(src,3));
}
private
static int binarySearch(int[] src,
int i) {
int low=0;
int high=src.length-1;
System.out.println("low is"+low);
System.out.println("high is"+high);
while(low<=high){
int mid = (low+high)/2;
System.out.println("mid is"+mid);
if(src[mid]==i){
return mid;
}else
if(i<src[mid]){
high=mid-1;
}else{
low=mid+1;
}
}
return -1;
}
}
相关文章推荐
- Java 实现二分查找\折半查找(速度快的查询有序列表)
- Java实现POP3服务器
- 用Java实现多线程服务器程序
- 用JAVA实现Undo、Redo,Copy、Paste、Cut
- 用Java实现的设计模式系列(2)-Prototype
- http断点续传简单实现(java)
- 用Java实现的设计模式系列(3)--Builder
- 使用 .NET实现JavaTM Pet Store J2EETM 蓝图应用程序
- 在Java程序,如何实现自适应位置的快捷菜单
- 用Java实现的设计模式系列(1)-Factory
- Java.NET --一个基于Java的Microsoft.NET框架的实现
- 利用Java实现zip压缩/解压缩
- Java Tip: 用Reflection实现Visitor模式
- 在java中实现对FORM的打印功能
- Java中利用散列表实现股票行情的查询
- 用Java实现Web服务器 HTTP协议
- 使用Java实现数据报通讯过程
- 在Java applet中如何实现一个模式对话框?
- Java实现时间日期格式转换示例
- dom规范和java中的实现(二)