Python学习29天

二分查找

复制代码
# 定义函数冒泡排序法从大到小排列
def bbble_sort(list):
    # i控制排序次数
    for i in range(len(list) - 1):
        # j控制每次排序比较次数
        for j in range(len(list) - 1 - i):
            if list[j] < list[j + 1]:
                list[j], list[j + 1] = list[j + 1], list[j]
复制代码
# 定义二分查找函数
def binary_search(list, search_num):
    """
    二分查找函数适用于从大到小排列的列表
    :param list: 需要查找的列表
    :param search_num: 需要查找到元素
    :return: 查到元素返回对应下标,未查到返回-1
    """
    # 定义返回下标
    index_num = -1
    # 左右下标范围
    left, right = 0, len(list) - 1
    # 当左下标大于右下标时,说明没找到,退出循环
    while left <= right:
        # 获得中间下标
        mid_index = (left + right) // 2
        # 当中间值大于查找值时,需要在右半边查找
        if list[mid_index] > search_num:
            left = mid_index + 1
        # 当中间值小于查找值时,需要在左半边查找
        elif list[mid_index] < search_num:
            right = mid_index - 1
        else:  # 即两数相等
            index_num = mid_index
            break #找到一个数满足就退出循环
    return index_num


import random
lst_num = []
# 定义需要查找到数
fin_num = 10
# 循环次数代表列表元素的个数
for _ in range(10):
    # 随机生成1-100直接的整数,并添加到列表中
    lst_num.append(random.randint(1, 100))
print(f"排序前:{lst_num}")
bbble_sort(lst_num)
print(f"从大到小排序后:{lst_num}")
index=binary_search(lst_num, fin_num)
if index==-1:
    print(f"{fin_num}没找到")
else:
    print(f"{fin_num}找到了,下标为:{index}")
相关推荐
叮当喵是mao26 分钟前
python基础知识(七)——写入excel
android·python·excel
卡卡_R-Python30 分钟前
关联度分析、灰色预测GM(1,1)、GM(1,1)残差模型——基于Python实现
开发语言·python
醒过来摸鱼33 分钟前
Golang时间操作
开发语言·python·golang
吖吖耶33338 分钟前
【Python爬虫】Scrapy框架实战
爬虫·python·scrapy
啵啵鱼爱吃小猫咪1 小时前
迭代学习公式
学习·机器人
宋一诺331 小时前
机器学习—再次决定下一步做什么
人工智能·python·机器学习
FellAveal1 小时前
【机器学习】如何配置anaconda环境(无脑版)
python·机器学习·anaconda
我想回家种地1 小时前
渗透学习笔记之Windows基础
笔记·学习
佚名ano1 小时前
阻尼Newton方法-数值最优化方法-课程学习笔记-5
笔记·学习·概率论
喝哈喝哈1 小时前
pycharm中配置pyqt5
python·qt·pycharm