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]
    我的目标是每天厉害一点点
  • 相关阅读:
    泛型总结
    Java多线程(学习篇)
    Java线程:总结
    Java线程:线程交互
    Java线程:线程安全类和Callable与Future(有返回值的线程)
    Java线程:条件变量、原子量、线程池等
    Java线程:堵塞队列与堵塞栈
    Java线程:锁
    poj 1679 The Unique MST(唯一的最小生成树)
    poj 1659 Frogs' Neighborhood (DFS)
  • 原文地址:https://www.cnblogs.com/sidaofeng/p/10167476.html
Copyright © 2011-2022 走看看