【python练习题】每日一练_第九天_二分查找法

作者: 退休的Coder分类: 职业职场 发布时间: 2021-11-16 09:56:17 浏览:14706 次

【python练习题】每日一练_第九天_二分查找法

退休的Coder:
喜欢视频的小伙伴,大家记得点个关注,一键三连(点赞+投币+收藏)呀! 更适合刚学完基础语法的学员,每天一个小案例,逐步提高。 有不懂的问题可以评论区留言咨询,看到后第一时间解答。[滑稽]

one_319:
二分查找说起来容易但是写代码的时候很容易出错,尤其是边界值问题。前辈要是序列中的元素可以重复,如何查找某一个元素第一次出现的位置,并返回它的索引值?

【回复】if number 》 arr_list【middle】: left = middle + 1 elif number 《 arr_list【middle】: right = middle - 1 else: if middle 》 0 and arr_list【middle-1】《 number or middle == 0: print(f'数字{number}已找到,索引值为{middle}') break else: right = middle -1 在找到和目标值相同的地方加个判断,如果找的那个位置是0,也就是列表中第一个元素时,显然它是第一个。 或者那个找的位置不是0,那么当找的那个位置的前一个数字小于目标值,说明他也是第一个。如果都不满足。 继续修改右指针,缩小查找范围。
【回复】大于 小于号会被当成html标签 被过滤掉,我就用中文的来表示下,看完之后,你差不多应该也知道如果去找相同元素最后一个位置的写法了
【回复】回复 @退休的Coder :会了 !谢谢
wakakadududu:
为什么return一个递归函数呢?这块没明白

MCHCIMP:
第二种函数递归的方法,如果老师能把怎么输出函数调用的次数(就是这个数字总共找了几次才找到)也写一下就更好了。。。。。

【回复】定义一个counts=0,进入函数判断就加一,最后输出就好了
英语我要收了你:
讲的真好 如果能把时间复杂度和空间复杂度顺带说一下就更好了

爱笑的白鼠:
up 的PPT能发一下吗,好好看呀,视频讲解的很仔细,三连了[星星眼]

假装很努力的:
已学!第二种递归函数的方法看不懂。什么是递归?

【回复】回复 @退休的Coder :好!下一次可以更递归函数的讲解吗?
【回复】就是函数自己执行它自己
蟹蟹Mg铝:
想请问这里第一种为什么右减一左加一呀?不应该没有加减嘛

【回复】因为这是一个顺序的数组,要查找的数大于了中间数的话,说明要查找的数在中间数右边,左加右减相当于两头靠近中间走,直到找到要查找的数
Woden_:
请问为什么把lef和rig的比较作为循环条件呢?

【回复】lef是最左边元素的索引,rig则相反,middle的位置由它们俩决定,比如当num<arr时,rig的值被移前,也就是说它们俩遍历着整个列表,是不能相交的(讲的不好大概是这样)

教育 课程 PYTHON 学习 视频教程 编程 职业 PYTHON教程 PYTHON入门 打卡挑战

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!