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}")
相关推荐
传奇开心果编程9 小时前
【Xilem 0.4 基础语法学与练】第一课:从零到计数器
学习·rust·前端框架
广州山泉婚姻9 小时前
Python序列号源码分析
python
计算机源码社9 小时前
【大数据项目实战】基于大数据的影视内容生态综合质量分析与可视化-基于数据挖掘的影视内容类型共现与口碑聚类分析系统
大数据·人工智能·python·数据挖掘·数据分析·毕业设计·课程设计
C^h9 小时前
pytorch 适合初学者 0基础学习
人工智能·pytorch·python
David猪大卫9 小时前
【C++修炼】智能指针使用及原理
开发语言·c++·经验分享·笔记·学习·考研·面试
小柯南敲键盘9 小时前
跨马翻译:AI批量图片翻译工具,跨境电商视频字幕翻译与智能抠图一体搞定
人工智能·python·音视频
z23456d10 小时前
第四十一天学习心得
学习
2601_9622972510 小时前
Python里behave和pytest-bdd哪个更适合中大型项目?为什么?
python·bdd·行为驱动开发·behave·pytest-bdd
sunflower#10 小时前
Go学习第五阶段:接口、泛型与包设计,实现可替换的通讯录存储层
学习·oracle·golang
dadaobusi11 小时前
RV设备透传:主线尚未支持
学习