使用循环和递归方法实现二分法搜索
来源:互联网 发布:网络协议基础知识 编辑:程序博客网 时间:2024/05/18 20:52
对于已排序的序列,实现二分法搜索算法,有循环和递归两种策略。
对于这种算法,中心点一直是一个开区间,因此下一次搜索时新区间应该相应的+-1,从而最终start>end
# -*- coding: utf-8 -*-def binarysearch1(l, item): start = 0 end = len(l) - 1 while start <= end: mid = (start + end)/2 if l[mid] < item: start = mid + 1 elif l[mid] > item: end = mid -1 else: return mid return -1def binarysearch_recur1(l, item): start = 0 end = len(l) - 1 def binarysearch_recur_pack(l, item, start, end): if start <= end: mid = (start + end)/2 if l[mid] < item: start = mid + 1 elif l[mid] > item: end = mid - 1 else: return mid result = binarysearch_recur_pack(l, item, start, end) if result == -1: return -1 else: return result else: return -1 return binarysearch_recur_pack(l, item, start, end)l = [1, 6, 8, 9, 14, 36, 77, 90]print binarysearch1(l, 5)print binarysearch_recur1(l, 78)
1 0
- 使用循环和递归方法实现二分法搜索
- 二分搜索的递归和循环实现
- JAVA使用循环和递归方法实现斐波拉切数列
- 使用递归实现二分法查找
- 二分法搜索迭代和递归算法
- Binary Search二分法搜索递归和非递归C++程序
- 二分法快速计算x的n次幂(递归和循环实现)
- 二分法查找的实现 递归与非递归方法
- 二分法,递归和非递归方式 实现(Java)
- 递归实现二分法
- 迭代器实现二分法搜索
- 实现二分法查找(递归实现)
- 用PHP实现二分法查找之递归和迭代
- 实现非递归二分法查询
- 二分查找 递归实现 和 循环实现
- 自己写二分法……(普通循环和运用递归思想)
- 二分法搜索bsearch使用举例
- 二分法(递归和非递归)
- PreferenceActivity详解
- oracle客户端精简绿色版-环境变量配置
- MPU6050数据读取
- 【VS】VS2015添加自定义模版
- 简单使用 AsyncTask
- 使用循环和递归方法实现二分法搜索
- Android一行代码实现网络加载GIF闪图(附源码)
- css3变形中几个重要点
- JAVA-实用类
- HTML5+、mui开发移动app
- php常用加密技术(包括密码加密及URL加密)
- log4j.properties配置详解
- Git 常用操作
- NYOJ-开灯问题