二分查找的两种实现方式(递归和非递归)--python实现
来源:互联网 发布:情义我心知 黎明演技 编辑:程序博客网 时间:2024/05/22 16:47
二分查找是我第一次面试时的编程题。
非递归方式:
# 二分查找非递归实现def binary_search(list, item):low = 0high = len(list) - 1while low <= high:mid = (low + high)//2guess = list[mid]if guess == item : return midif item > guess :low = mid + 1else:high = mid -1return None#测试my_list = [1,3,4,5,6,7,8,9]print(binary_search(my_list, 5)) print(binary_search(my_list, 2))
个人认为要记住的点:首先要有查找范围,所以必须 low <= high .一旦超出这个范围说明要查找的数不存在,返回 None .
其次,二分查找就是缩小查找范围,方法就是不断改变 low 和 high .
最后,要说明的是一个python 语法, python 有两种除法,第一种是精确除法, " / " 这个除法的结果一定是 一个浮点类型的数。 第二种称为地板除," // " 这个其实就是取整。
递归方式:
#二分查找递归方式def binary_s(list, low, high, item):if low <= high:mid = (low + high) //2guess = list[mid]if item == guess:return midif item < guess:binary_s(list, low, mid-1, item)else:binary_s(list, mid+1, high, item)return None#测试my_list = [1,3,4,5,6,7,8,9]print(binary_s(my_list, 0, len(my_list)-1, 5)) print(binary_s(my_list, 0, len(my_list)-1, 2))
递归方式与上面提到的一样,只要有查找范围,便去查找,没有范围了就说明没找到,返回 None.
阅读全文
0 0
- 二分查找的两种实现方式(递归和非递归)--python实现
- 二分查找的两种实现方式--循环和递归
- c++二分查找实现(非递归和递归方式)
- c++二分查找实现(非递归和递归方式)
- 二分查找(递归与非递归两种方法实现)
- 二分查找的递归/非递归方式C++实现
- 二分查找递归和非递归实现
- 二分查找递归和非递归实现
- 二分查找递归和非递归实现
- 二分查找递归和非递归实现
- 递归和非递归实现二分查找
- 一个递归和非递归实现二分查找的代码
- C++数据结构--二分查找的递归和非递归实现
- 二分查找法的递归和非递归实现
- 二分查找的非递归和递归例程实现
- 二分查找的递归和非递归实现
- 二分查找的递归和非递归实现
- 二分查找的递归和非递归实现
- Hdu6081 度度熊的王国战略
- static的一点理解
- 【Android游戏开发十五】关于Android 游戏开发中 OnTouchEvent() 触屏事件的性能优化笔记! .
- Android FrameWork——Touch事件派发过程详解
- Android2.3平台输入输出机制之总结
- 二分查找的两种实现方式(递归和非递归)--python实现
- 移动窗口基线(Moving Window Baseline)
- 如何给Mysql数据库赋予远程连接的权限
- 总结一下对buffer的学习体会
- (十)Destination简介
- android特效开发==纪念
- 抛开设计模式,软件设计的微思考
- D3.js学习-选择元素和绑定数据
- 学习原子哥STM32M4(2):可以简化我们操作的位带操作