首页 > 编程语言 >Python基础----冒泡排序和二分查找(持续更新中)

Python基础----冒泡排序和二分查找(持续更新中)

时间:2024-03-20 09:31:29浏览次数:249  
标签:Python len li ---- range 查找 冒泡排序 print

冒泡排序(共3个版本)

在冒泡排序中,一共有3个版本,经常使用的是v3.0,v3.0版本的精彩之处就在于b = false和b=true 只要把这点搞懂,那么冒泡排序就没什么难的!!!

li = [5,4,7,8,2,1]

# 冒泡排序的v1.0版本
for j in range(len(li) - 1):
    for i in range(len(li) - 1):
        if li[i] > li[i+1]:
            li[i],li[i+1] = li[i+1],li[i]
print(li)

# 冒泡排序的v2.0版本
for j in range(len(li) - 1):
    # 之前比较过的不用再比较了,比较次数逐次递减
    for i in range(len(li) - 1 - i):
        if li[i] > li[i+1]:
            li[i],li[i+1] = li[i+1],li[i]
print(li)

# 冒泡排序的v3.0版本
li = [8, 2, 3, 5, 4, 6, 7, 1]   #[2, 3, 5, 4, 6, 7, 1,8]
for i in range(len(li) - 1):
    b = False
    # 之前比较过的不必要再比较了,比较次数逐次递减
    for j in range(len(li) - 1 - i):
        if li[j] > li[j + 1]:
            li[j], li[j + 1] = li[j + 1], li[j]
            b = True
    print(li)
    #   b=>True False  b=>False True
    #   b == False => not b
    #   b == True => b
    if not b:   # 如果b一直都是False那就直接退出循环
        break

二分查找

二分查找的前提是:必须有序
二分查找中,精彩之处在于 +1和-1,这里需要大家自己画个图理解,这也是难点和重点

'''
    二分查找法前提条件:
        查找的列表中的元素,必须有序
'''
''''''
'''
    二分查找法前提条件:
        查找的列表中的元素,必须有序
'''
li = [1, 6, 8, 10, 20, 30]
s = 3
# 折半折的是下标
l, r = 0, len(li)-1
while True:
    m = (l + r) // 2
    if li[m] > s:
        # 找不到的时候,l会大于r
        r = m - 1
    elif li[m] < s:
        # +1为了解决找不到最右侧值的问题
        l = m + 1
    else:
        print(f"找到了,下标是:{m}")
        break
    if l > r:
        print("没有这个值")
        break


标签:Python,len,li,----,range,查找,冒泡排序,print
From: https://blog.csdn.net/N16696796429/article/details/136863912

相关文章

  • 为什么面试官都爱问websocket?
    什么是webSocket?WebSocket是一种在单个TCP连接上进行全双工通信的应用层协议,它弥补HTTP协议在持久通信能力上的不足,允许服务器主动向客户端推送数据,并且简化了客户端和服务器之间的数据交换。在WebSocket通讯中,浏览器和服务器只需完成一次握手,便可创建持久性连接。Web......
  • 项目管理基础
    目录1.概述2.项目管理起源2.1.古代工程项目2.2.工程和军事作战2.3.工业革命2.4.现代项目管理的催化2.5.项目管理专业化​​​​​​​2.6.项目管理组织的成立​​​​​​​2.7.项目管理体系3.项目管理概论​​​​​​​3.1.项目基本要素​​​​​​​3.1.1.项目......
  • 亮灯指引,物品无忧-仓库货架亮灯寻物系统助您管理仓库事半功倍
    仓库货架亮灯寻物系统是一种智能化的仓库管理工具,通过给货架安装感应器和LED灯,实现物品无忧的管理。该系统的工作原理是,在货架上放置感应器,当有物品放置在货架上时,感应器会自动检测到并发送信号给控制系统。控制系统会根据物品的信息,控制LED灯亮起,指引操作人员找到需要的物品......
  • qt http get和post非阻塞时区分调用接口
    qthttpget和post接口有阻塞和非阻塞两种实现。非阻塞的方式是信号槽关联,在槽函数中实现。实际项目中多个接口调用的话需要区分调用接口,然后根据接口解析json报文,我分享下我的方法。通过获取QStringurl=reply->url().toString();可以获取到调用的url,可以根据url来进行区......
  • Swagger
    Swaggerknife4j对swagger进行了封装,在访问在线接口文档YApi时在pom中导入knife4j的依赖即可。Swagger可以在线查看你写的ajax请求。请求路径,请求参数等。还可以查看ajax请求后的响应数据。swagger用法1.导入knife4j的maven坐标(依赖)。 <!--knife4j读取yapi接口文档--> <......
  • LiveGBS流媒体平台GB/T28181常见问题-与海康NCG大华VIS等国标平台对接如何判断自身是
    LiveGBS与海康NCG大华VIS等国标平台对接如何判断自身是上级还是下级?1、背景2、判定上级或是下级3、LiveGBS作为上级4、LiveGBS作为下级5、搭建GB28181视频直播平台1、背景国标项目实施的过程中,经常要与海康、大华、华为、宇视等国标视频平台对接,此时LiveGBS是作为下......
  • C语言程序设计(第二版)学习笔记——第三章
    第三章基本数据类型及数据的输入输出3.1C语言的基本数据类型简介要在C环境下实现运算必须首先定义变量,并确定变量的数据类型,然后才能对数据进行操作。C语言的数据类型分为四大类:基本类型、构造类型、指针类型和空类型(无值类型)。3.2标识符、常量和变量3.2.1标识符1、......
  • 在智慧能源的发展历程中,哪些技术的出现起到了关键性的作用?
    智慧能源作为一种全新的能源发展理念,正逐渐成为能源领域的热门话题。在智慧能源的发展历程中,有许多技术的出现起到了关键性的作用,推动了智慧能源的快速发展。一、物联网技术物联网技术使得能源设备可以实现互联互通,通过传感器和网络设备对能源设备进行实时监测和控制,实现......
  • Programming Abstractions in C阅读笔记:p327-p330
    《ProgrammingAbstractionsinC》学习第78天,p327-p330,总计4页。一、技术总结1.ADT(抽象数据类型)p328,Atypedefinedintermofitsbehaviorratherthanitsrepresnetationiscalledanabstractdatatype(如果一种数据类型使用它们的行为而不是表示来定义,那么这样的......
  • .NET开源免费的文件搜索和应用程序启动器--Flow Launcher
    思维导航前言工具介绍支持语言工具源代码工具下载安装工具快捷键部分功能截图项目源码地址优秀项目和框架精选DotNetGuide技术社区交流群前言今天大姚给大家分享一款.NET开源(MITLicense)、免费、功能强大的Windows快速文件搜索和应用程序启动器:FlowLauncher。......