ef
来源:互联网 发布:java猜数字小游戏 编辑:程序博客网 时间:2024/04/30 19:04
/**
*名称:BinarySearch
*功能:实现了折半查找(二分查找)的递归和非递归算法.
*说明:
* 1、要求所查找的数组已有序,并且其中元素已实现Comparable<T>接口,如Integer、String等.
* 2、非递归查找使用search();,递归查找使用searchRecursively();
*
*本程序仅供编程学习参考
*
*@author: Winty
*@date: 2008-8-11
*@email: wintys@gmail.com
*/
class BinarySearch<T extends Comparable<T>> {
private T[] data;//要排序的数据
public BinarySearch(T[] data){
this.data = data;
}
public int search(T key){
int low;
int high;
int mid;
if(data == null)
return -1;
low = 0;
high = data.length - 1;
while(low <= high){
mid = (low + high) / 2;
System.out.println("mid " + mid + " mid value:" + data[mid]);///
if(key.compareTo(data[mid]) < 0){
high = mid - 1;
}else if(key.compareTo(data[mid]) > 0){
low = mid + 1;
}else if(key.compareTo(data[mid]) == 0){
return mid;
}
}
return -1;
}
private int doSearchRecursively(int low , int high , T key){
int mid;
int result;
if(low <= high){
mid = (low + high) / 2;
result = key.compareTo(data[mid]);
System.out.println("mid " + mid + " mid value:" + data[mid]);///
if(result < 0){
return doSearchRecursively(low , mid - 1 , key);
}else if(result > 0){
return doSearchRecursively(mid + 1 , high , key);
}else if(result == 0){
return mid;
}
}
return -1;
}
public int searchRecursively(T key){
if(data ==null)return -1;
return doSearchRecursively(0 , data.length - 1 , key);
}
public static void main(String[] args){
Integer[] data = {1 ,4 ,5 ,8 ,15 ,33 ,48 ,77 ,96};
BinarySearch<Integer> binSearch = new BinarySearch<Integer>(data);
//System.out.println("Key index:" + binSearch.search(33) );
System.out.println("Key index:" + binSearch.searchRecursively(3) );
//String [] dataStr = {"A" ,"C" ,"F" ,"J" ,"L" ,"N" ,"T"};
//BinarySearch<String> binSearch = new BinarySearch<String>(dataStr);
//System.out.println("Key index:" + binSearch.search("A") );
}
}
- ef
- EF
- EF
- EF
- EF
- EF
- EF总结--EF简介
- 【EF】浅谈EF
- ERF EF
- EF 总结
- VS2010 EF
- EF Migrations
- EF二三事
- EF TMD
- ef学习
- EF入门
- ef事务
- 初始EF
- 如何学Linux
- 一招一式攻克linux
- getOutputStream() has already been called for this response的解决方法
- dg
- 通过Java或Jsp向数据库存取二进制图片
- ef
- ef2
- ef3
- 寻找遗失的整数 (Finding The Missing Integer)
- 让C#编译后的程序运行时不一闪而过的方法
- 夏天到了,天气热了,让我们的爱机也凉快一下吧
- 夏天的心情
- TOMCAT JSP WEB-INF META-INF目录详解
- IDL读取Shapefile文件