递归:python 实现2分查找

2分查找

def data_search(n,m):    mid = int(len(n)/2)    if len(n)>=1:        if n[mid]>m:            print(‘要寻找的数字在%s左边‘%n[mid])            data_search(n[:mid], m)        elif n[mid]<m:            print(‘要寻找的数字在%s右边‘%n[mid])            data_search(n[mid:], m)        else:            print(‘找到该数字‘)    else:        print(‘找不到该数字‘)

if __name__  == ‘__main__‘:    data = list(range(1,700))    data_search(data,300)
时间: 2024-11-03 21:52:38

递归:python 实现2分查找的相关文章

递归1--二分查找

递归1--二分查找 一.心得 递归的时候注意返回值,返回的时候是返回到上一层 二.代码及结果 1 /* 2 二分查找: 3 可写递推和递归 4 其实这两个都只要把递推式子写出来就好 5 6 查找的数大于mid,left=mid+1 7 小于mid,right=mid-1 8 边界条件,等于mid,输出即可 9 */ 10 /* 11 心得:注意返回值,返回的时候是返回到上一层 12 */ 13 #include <iostream> 14 using namespace std; 15 //二

一天一道算法题---6.26---二分查找

感谢微信平台---一天一道算法题----每天多一点进步-- 好累啊  现在在用win7自带的输入法 打起来真麻烦 快点把这2天的搞完就重装了 还是直接来源于----〉 待字闺中 分析 给定一个数组A,其中有一个位置被称为Magic Index,含义是:如果i是Magic Index,则A[i] = i.假设A中的元素递增有序.且不重复,请给出方法,找到这个Magic Index.更进一步,当A中允许有重复的元素,该怎么办呢? 没有重复元素的情况 一些同学在遇到这个题目的时候,往往会觉得比较简单.

?分查找

?分查找. 每次能够排除掉?半的数据. 查找的效率非常?. 但是局限性比较?. 必须是有 序序列才可以使??分查找 要求: 查找的序列必须是有序序列. # 判断n是否在lst中出现. 如果出现请返回n所在的位置 # ?分查找---?递归算法 lst = [22, 33, 44, 55, 66, 77, 88, 99, 101, 238, 345, 456, 567, 678, 789] n = 567 left = 0 right = len(lst) - 1 count = 1 while l

Python中的二叉树查找算法模块

问题 思路说明 二叉树查找算法,在开发实践中,会经常用到.按照惯例,对于这么一个常用的东西,Python一定会提供轮子的.是的,python就是这样,一定会让开发者省心,降低开发者的工作压力. python中的二叉树模块内容: BinaryTree:非平衡二叉树 AVLTree:平衡的AVL树 RBTree:平衡的红黑树 以上是用python写的,相面的模块是用c写的,并且可以做为Cython的包. FastBinaryTree FastAVLTree FastRBTree 特别需要说明的是:树

寒假week1---二分查找(二分枚举)

寒假week1---二分查找(二分枚举)1.适用条件:要查找(枚举)的集合有序 && 查找(枚举)的"条件"具有单调性2.什么是"条件":example: 1.给定一个有序数组,从中查找数字7的下标.条件是:这个数字等于7. 2.给定一个有序数组,从中查找满足函数f(x)<99的数字的下标.条件是:f(x)<99.3.什么是"满足条件": 在上述例1中,所有等于7的数字都是满足条件的,例2中所有f(x)<99的x

NOJ---1567---二分查找

这题我的代码 还没有在OJ上提交 因为 我们的Oj 又崩溃了=-= touch me =他好了 就去交了 但应该是对的了 因为 大神帮我解决了那个死循环问题 l = mid+1  与 l = mid 在某种严格意义上来说还是不同的 当我的条件是---mid = (l+r)/2  那么它是偏向L的 写法就应该采用第一种 如果mid = ( l + r + 1 )/2 那么r应写为mid-1 这题的二分还是不难的 二分的基本框架还是差不多的 主要是binarysearch的写法 这个还是要看具体的题

2019.9.25-二分查找代码(递归和非递归方法)

# coding:utf-8#[17, 20, 26, 31, 44, 54, 55, 77, 93]#mid = n/2##[17, 20, 26, 31]#mid = n/2 def binary_search(alist, item): """二分查找,遞歸""" n = len(alist) if n > 0: mid = n//2 if alist[mid] == item: return True elif item <

python算法之二分查找

说明:大部分代码是在网上找到的,好几个代码思路总结出来的 通常写算法,习惯用C语言写,显得思路清晰.可是假设一旦把思路确定下来,并且又不想打草稿.想高速写下来看看效果,还是python写的比較快.也看个人爱好.实习的时候有个同事对于python的缩进来控制代码块各种喷....他认为还是用大括号合适...怎么说呢,适合自己的才是最好的.我个人的毛病就是,写了几天C,到要转到python的时候,代码中依旧有C的影子..比方大括号问题,比方忘记在while或这for.if.else等后面加":&quo

python实现二分叉查找

*二分叉查找就是折半查找 比如12345这几个数字当中找2,他会先找到这五个数字中的中坚的那个与2进行比较,比如中间的3>2他就认为3以后的不用查找了,然后查找3左边的,即123,再把这个分半,然后中坚为2,2=2 即找到其实代码也就是这个思路,只不过这个里边添加了递归调用函数. 说一下遇到的问题:递归调用次数最多为999默认,开始的时候也没有写如果找完了还是没有,怎么办,代码不难就是一个递归调用思想,我也是刚接触,有问题大家一起讨论,欢迎 原文地址:http://blog.51cto.com/