通过Python实现二分法(Binary Chop)

该博客展示了如何使用Python实现二分法,并在不同规模的数据中查找随机数。通过对10^1到10^8个元素的数组进行实验,记录了查找次数和所花费的时间,揭示了二分法在大规模数据查找中的效率。
摘要由CSDN通过智能技术生成

一下通过Python实现运用二分法分别在10^1-10^8 个元素中查找随机数的代码。

import random, time

def binary_chop(x):

    count = 1  # 计数器
    numbers = list(range(1, x+1))  # 创建列表

    random_number = random.choice(numbers)  # 在给定范围内生成随机查找数
    print('随机查找数: %s' % random_number)

    while True:

        if (numbers[-1] + numbers[0]) % 2 == 0:  # 如果列表元素个数为奇数
            middle_number = int((numbers[0] + numbers[-1]) / 2)  # 获取中间数(列表正好有中间数)

        else:
            middle_number = int((numbers[0] + numbers[-1]) / 2 + 1)  # 如果列表元素个数为偶数,中间数为右边一半列表的第一个数

        numbers = caculate(random_number, middle_number, numbers)

        if numbers == 0:
            print('总共需要查找的次数: %s 次' % count)
            break

        count += 1


def caculate(random_number, middle_number,numbers):

    if random_number == middle_number:  # 如果恰好随机数在中间则找到该随机数
        return 0

    e
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值