zoukankan      html  css  js  c++  java
  • python- 冒泡算法

    #### 冒泡算法 ####
    # a 和 b 的值互换
    a = 111
    b = 222
    test = a # test = 111
    a = b # a = 222
    b = test # b = 111

    li = [44, 12, 22, 33, 456, 1, 10]
    # print(len(li)) # 7
    # for j in range(len(li)):
    # print(j)
    # 0 1 2 3 4 5 6 7 # range默认是从0 开始的。
    for i in range(len(li) - 1): # 此处的-1 是因为,len(li) = 7 ,而做比较的时候i = 7 是最大的,没有i + 1
    if li[i] > li[i + 1]:
    temp = li[i]
    li[i] = li[i + 1]
    li[i + 1] = temp
    print(li)
    # [12, 22, 33, 44, 1, 10, 456] 默认将最大的一个数排序到了最后。
    # ### 排序列表中第二个最大的值 ###
    for i in range(len(li) - 2): # 此处的-2 是因为,最后一个数已经是最大的了,要排除掉,排除掉以后就是第二大的了。
    if li[i] > li[i + 1]:
    temp = li[i]
    li[i] = li[i + 1]
    li[i + 1] = temp
    print(li)
    # [12, 22, 33, 1, 10, 44, 456]
    # ### 排序列表中第三个最大的值 ###
    for i in range(len(li) - 3): # 此处的-3 是因为,最后1和2的数已经是最大的了,要排除掉,排除掉以后就是第三大的了。
    if li[i] > li[i + 1]:
    temp = li[i]
    li[i] = li[i + 1]
    li[i + 1] = temp
    print(li)
    # [12, 22, 33, 1, 10, 44, 456]

    # 通过以上的测试,我们发现一个道理,只有最后-1 ,-2, -3 在变,其他都没有变换,可以用一个变量来替换。
    # for i in range(len(li) - 1):
    # for i in range(len(li) - 2):
    # for i in range(len(li) - 3):
    for jj in range(1, len(li)): # 此处的1,是从1 开始,而不是从0 开始,因为-0 还是那个,没有意义。
    for i in range(len(li) - jj):
    if li[i] > li[i + 1]:
    temp = li[i]
    li[i] = li[i + 1]
    li[i + 1] = temp
    print(li)
    # [1, 10, 12, 22, 33, 44, 456]
    我的目标是每天厉害一点点
  • 相关阅读:
    Northwind数据库下载地址
    MSSQL跨服务访问数据库
    MSSQL基于一致性的I/O错误,解决方法之一
    DataGridView单元格ComboBox控件添加事件
    线程安全类 跨线程修改窗体UI
    数据库字段名
    SELECT INTO 和 INSERT INTO SELECT
    链表
    因为数据库正在使用,所以无法获得对数据库的独占访问权
    代替游标的循环
  • 原文地址:https://www.cnblogs.com/sidaofeng/p/10167476.html
Copyright © 2011-2022 走看看