使用Java完成《算法导论》习题2.3-7
2015-06-13 15:05
706 查看
public class BinarySreachSum2_3_7 { /** * 使用二分查找,判断给定集合中是否存在一个给定整数 * * @date 2015-6-13 * @author lemma */ // doSreach方法 public boolean doSreach(int Data[], int target) { // 判断和是否存在 boolean isSum = false; //对集合元素进行查找 for (int index = 0; index < Data.length; index++) { //目标元素值等于给定整数减去在查元素 int addend = target - Data[index]; // 二分查找addend int start = 0; int end = Data.length - 1; int middle = (start + end) / 2; for (; start < end;) { //middle等于目标元素值且middle不等于在查元素 if (Data[middle] == addend && middle != index) { isSum = true; break; } //middle等于在查元素,退出本次循环 else if (middle == index) { break; } //middle比目标元素值大,查找左半部分 else if (Data[middle] > addend) { end = middle - 1; middle = (start + end) / 2; } //middle比目标元素值小,查找右半部份 else if (Data[middle] < addend) { start = middle + 1; middle = (start + end) / 2; } } } //返回是否存在的判断 return isSum; } public static void main(String args[]) { int Data[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int target = 20; if (new BinarySreachSum2_3_7().doSreach(Data, target)) { System.out.println("Yes"); } else { System.out.println("NO"); } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统