二分查找算法(递归与非递归两种方式)
首先说说二分查找法。
二分查找法是对一组有序的数字中进行查找,传递相应的数据,进行比较查找到与原数据相同的数据,查找到了返回1,失败返回对应的数组下标。
采用非递归方式完成二分查找法。java代码如下所示。
- /*
- * 非递归二分查找算法
- * 参数:整型数组,需要比较的数.
- */
- public static int binarySearch(Integer[]srcArray,int des){
- //第一个位置.
- int low=0;
- //最高位置.数组长度-1,因为下标是从0开始的.
- int high=srcArray.length-1;
- //当low"指针"和high不重复的时候.
- while(low<=high){
- //中间位置计算,low+ 最高位置减去最低位置,右移一位,相当于除2.也可以用(high+low)/2
- int middle=low+((high-low)>>1);
- //与最中间的数字进行判断,是否相等,相等的话就返回对应的数组下标.
- if(des==srcArray[middle]){
- return middle;
- //如果小于的话则移动最高层的"指针"
- }else if(des<srcArray[middle]){
- high=middle-1;
- //移动最低的"指针"
- }else{
- low=middle+1;
- }
- }
- return-1;
- }
- }
采用递归方式完成二分查找算法。代码如下所示。
- /**
- * 递归方法实现二分查找法.
- * @param Array数组
- * @param low 数组第一位置
- * @param high 最高
- * @param key 要查找的值.
- * @return 返回值.
- */
- int BinSearch(int Array[],int low,int high,int key)
- {
- if (low<=high)
- {
- int mid = (low+high)/2;
- if(key == Array[mid])
- return mid;
- else if(key<Array[mid])
- //移动low和high
- return BinSearch(Array,low,mid-1,key);
- else if(key>Array[mid])
- return BinSearch(Array,mid+1,high,key);
- }
- else
- return -1;
- }
递归思想会被经常用到,更加突出了编程解决问题的高效。 print?
相关推荐
- 第七章 递归函数(续)、二分查找算法
- 《算法导论》第二章----插入排序(伪代码实现、课后习题(递归版本、二分查找策略版本))
- 算法(第四版)学习笔记之二分查寻的递归与非递归java实现
- 算法:两种形式(递归/循环)实现二分查找
- python基础编程: 编码补充、文件操作、集合、函数参数、函数递归、二分查找、匿名函数与高阶函数
- 数据结构与算法_15 _ 二分查找(上):如何用最省内存的方式实现快速查找功能
- 第七章|7.2并发编程|多线程 1、线程 2、开启线程的两种方式 3、Thread对象的其他属性或方法 4、守护线程 5、互斥锁 6、GIL的基本概念 7、死锁与递归锁 8、信号亮 9、Event事件 10、定时器 11、线程queue 12、进程池线程池
- 阶段性总结 计算机基础之编程 计算机组成 计算机操作系统 编程语言分类 网络瓶颈效应 python文件执行的两种方式 变量 常量 变量内存管理 定义变量的三种特征 花式赋值 注释 与用户交互 格式化输出的三种方式 基本运算符 流程控制之if判断 流程控制之while循环 流程控制之for循环 数字类型 字符串 列表 字典 元组 集合 布尔 数据类型分类 解压缩 异常处理 深浅拷贝 字符编码 Pyhton2和3的编码的区别 文件的打开方式 文件的三种打开模式 with管理文件上下文 文件的高级应用 文件的两种修改方式 函数的定义 定义函数的三种方式 函数的返回值 函数的调用 函数的参数 可变长参数 函数对象 函数的嵌套 名称空间和作用域 闭包函数 装饰器 迭代器 生成器 三元表达式 列表推导式 字典生成式 生成器表达式 内置函数 匿名函数 递归 面向过程编程 模块的四种形式 import和from...import 循环导入问题 模块的搜索路径 文件的两种用途 包 time模块 datetime模块
- 全排列之递归与非递归算法实现总结
- 算法导论第十章练习10.4-3非递归方式实现二叉树的中序遍历
- 构造函数 (C++)
- adb -s