java实现二分查找
2016-05-13 11:11
447 查看
public class BinarySearch { public static void main(String[] args) { int[] a = { 1, 3, 5, 6, 7, 8, 9, 11, 12, 13 }; System.out.println(search2(a, 1)); System.out.println(search2(a, 3)); System.out.println(search2(a, 5)); System.out.println(search2(a, 6)); System.out.println(search2(a, 7)); System.out.println(search2(a, 8)); System.out.println(search2(a, 9)); System.out.println(search2(a, 11)); System.out.println(search2(a, 12)); System.out.println(search2(a, 13)); System.out.println(search2(a, 100)); System.out.println(search2(a, 10)); System.out.println(search2(a, 0)); } // 递归算法 public static int search(int[] data, int left, int right, int des) { if (left > right) return -1; int middle = (left + right) / 2; if (des < data[middle]) return search(data, left, middle - 1, des); else if (des > data[middle]) return search(data, middle + 1, right, des); else return middle; } // 非递归算法 public static int search2(int[] data, int des) { int left = 0; int right = data.length - 1; int middle = (left + right) / 2; while (left <= right/* && left < data.length && right >= 0 */) { if (data[middle] > des) { right = middle - 1; middle = (left + right) / 2; } else if (data[middle] < des) { left = middle + 1; middle = (left + right) / 2; } else return middle; } return -1; } }
相关文章推荐
- 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简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树