二分查找,递归和非递归
来源:互联网 发布:阿里云怎么退款 编辑:程序博客网 时间:2024/05/19 23:12
前言:对于排好序的关键字的查找,通常使用二分查找,时间复杂度为O(logn)
1.思想
- 设数组区间为low到high,对于目标数,先查看数组中间元素,及下标为(low+high)/2的元素是否匹配
- 若是则返回,若目标元素较小,则在low到high-1区间查找
- 若目标元素较大,则在low+1到high区间查找
2.代码
public class BinarySearch { public static void main(String[] args) { int[] data = {2,4,5,6,8,9,12,54,564}; System.out.println(binarySearch(data, 2)); } //iterative public static int binarySearch(int[] data, int target) { int low = 0, high = data.length-1; int mid; while (low <= high) { mid = (low + high) / 2; if (data[mid] == target) { return mid; } else if (target < data[mid]) { high = mid - 1; } else { low = mid + 1; } } return -1; } //recursive public static int binarySearch(int[] data, int low, int high, int target) { if (low <= high) { int mid = (low + high) / 2; if (target == data[mid]) { return mid; } else if (target < data[mid]) { return binarySearch(data, low, mid-1, target); } else { return binarySearch(data, mid+1, high, target); } } return -1; }}
0 0
- 二分递归查找和非递归查找
- 二分查找递归和非递归实现
- 二分查找算法 递归和非递归
- 二分查找(递归和非递归)
- 递归和非递归的二分查找
- 二分查找递归和非递归实现
- 二分查找递归和非递归实现
- 二分查找递归和非递归
- 二分查找-递归和非递归
- 二分查找,递归和非递归
- 二分查找递归和非递归实现
- 二分查找递归和非递归
- 递归和非递归实现二分查找
- 二分查找的递归和非递归
- 二分查找递归非递归
- 二分查找递归非递归
- 二分查找 非递归
- 非递归二分查找
- 如何在Windows系统安装pygame
- HDU1005
- Problem-1008
- eclipse、Android查看svn更新日志
- HTML5脚本扩展---新增小型API
- 二分查找,递归和非递归
- linux 安装 solr
- java(优化13) java高并发量网站解决方案
- 使用ab对nginx进行压力测试
- ListView 选择模式
- 读取properties配置文件
- hdu 5672 String【尺取法】
- 【NOIP practice】BSOJ 1947 编码 递推
- SQList的操作