二分法python算法_02python算法-二分法简介

本文介绍了二分法的概念及其在计算机领域的应用,特别是在排序算法中的使用。通过一个猜数字的游戏,解释了二分法如何通过不断缩小搜索范围提高效率。示例代码展示了递归实现的快速排序算法,强调了猜想数在算法中的关键作用。二分法的核心在于根据已知信息有效地减少迭代次数,提高问题解决速度。
摘要由CSDN通过智能技术生成

老规矩:

什么是二分法:

其实是一个数学领域的词,但是在计算机领域也有广泛的使用。

为什么需要二分法?

当穷举算法性能让你崩溃时。

二分法怎么用呢?

让我们先玩一个游戏先,我心里想一个100以内的整数你来猜猜。那么你可以从1-100这么猜,当然如果我说我想的10000以内的,那么迭代次数线性上升。。。你懂的

当然你可以先设一个猜想数,我们可以采用2分之一的方法猜,首先是50 那么比50大的化就在50-100取2分之一为猜想数,继续。当然2分法不一定是2分之一,只是取决

于答案出现的区间十分有规律性,如果你知道小明老是喜欢猜比较小的数,你会不会一直都用2分之一呢?

我们可以看下用二分法排序的代码

def quick (L, low, high):

i = low

j = high

if i >= j:

return L

key = L[i]

while i < j:

while i < j and L[j] >= key:

j = j-1

L[i] = L[j]

while i < j and L[i] <= key:

i = i+1

L[j] = L[i]

L[i] = key

quickSort(L, low, i-1)

quickSort(L, j+1, high)

return L

很简单吧,这个是用递归实现的,核心依然是猜想数. 先设置一个猜想数,然后比猜想大的在右边,比猜想数小的在左边。然后把一个列表分成两个,然后接着对这两个列表做同样的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值