二分查找递归非递归
来源:互联网 发布:淘宝店铺图片多大尺寸 编辑:程序博客网 时间:2024/06/06 07:44
前言:二分查找是针对于一组有序元素的查找算法,时间复杂度了O(logn)
直接上代码
public class BinarySearch { public static void main(String[] args) { int[] data = {1,4,6,7,9,12,16,78,98}; BinarySearch b = new BinarySearch(); int result = b.binarySearch(data, 1); System.out.println(result); } //iterative public int binarySearch(int[] data, int target) {//数组有序用二分查找,时间复杂度O(logn) if (data == null || data.length == 0) return -1;//非法输入返回-1 int low = 0; int high = data.length - 1; int mid; while (low <= high) {//有等于的情况即最后一次二分查找 //mid = (low + high) / 2;//在循环里面取中间值 mid = low + (high - low) >> 1;//用移位操作加快速度,同时考虑low + high溢出 if (target < data[mid]) { high = mid - 1; } else if (target > data[mid]) { low = mid + 1; } else { return mid; } } return -1;//找不到返回-1 } //recursive public int binarySearch2(int[] data, int low, int high, int target) {//递归法需要加low和high参数 if (data == null || data.length == 0) return -1; if (low <= high) { int mid = (low + high) / 2; if (target < data[mid]) { return binarySearch2(data, low, mid - 1, target);//要return } else if (target > data[mid]) { return binarySearch2(data, mid + 1, high, target); } else { return mid; } } else { return -1; } }}
0 0
- 二分查找递归非递归
- 二分查找递归非递归
- 二分查找 非递归
- 非递归二分查找
- 二分递归查找和非递归查找
- 二分查找(递归与非递归)
- 二分查找递归和非递归实现
- 二分查找递归与非递归总结
- 二分查找算法 递归和非递归
- 二分查找(递归与非递归)
- 二分查找(递归和非递归)
- 递归与非递归进行二分查找
- 二分查找递归与非递归实现
- 二分查找递归与非递归算法
- 二分查找算法-递归-非递归实现
- 二分查找(递归与非递归)
- 递归和非递归的二分查找
- 二分查找(递归与非递归)
- 2016年,谁是最受欢迎的 Java EE 服务器?
- 面向对象的三大特性
- POJ 2155 Matrix(二维树状数组模板)
- 打印十字图---文字图形
- 757
- 二分查找递归非递归
- maven snapshot和release版本的区别
- 几个有用的开发论坛,网站
- Android Studio 通过NDK调用OpenCV
- (4.1.27.4)NI/NDK开发指南(一)——JVM查找java native方法的规则
- STM32命名规则
- Java+WebSocket+WebRTC实现视频通话实例
- 滑块控件
- Linux配置防火墙