zoukankan      html  css  js  c++  java
  • 【Python全栈笔记】07 [模块二] 20 Oct 冒泡排序

    给出一个列表,进行冒泡排序

    原理算法: 

     1 li = [52, 37, 23, 11, 3, 1, ]
     2 
     3 print(li)
     4 
     5 # 每次循环,进行一次排序,列表内数字两两比较,最大的数字排到最末尾 
     6 # 一共循环len(li) - 1 次
     7 
     8 for i in range(len(li) - 1):
     9     if li[i] > li[i + 1]:
    10         temp = li[i]
    11         li[i] = li[i+1]
    12         li[i + 1] = temp
    13 print(li)
    14 
    15 for i in range(len(li) - 2):
    16     if li[i] > li[i + 1]:
    17         temp = li[i]
    18         li[i] = li[i+1]
    19         li[i + 1] = temp
    20 print(li)
    21 
    22 for i in range(len(li) - 3):
    23     if li[i] > li[i + 1]:
    24         temp = li[i]
    25         li[i] = li[i+1]
    26         li[i + 1] = temp
    27 print(li)
    28 
    29 for i in range(len(li) - 4):
    30     if li[i] > li[i + 1]:
    31         temp = li[i]
    32         li[i] = li[i+1]
    33         li[i + 1] = temp
    34 print(li)
    35 
    36 for i in range(len(li) - 5):
    37     if li[i] > li[i + 1]:
    38         temp = li[i]
    39         li[i] = li[i+1]
    40         li[i + 1] = temp
    41 print(li)
    42 
    43 '''
    44 输出的结果:
    45 [52, 37, 23, 11, 3, 1]
    46 [37, 23, 11, 3, 1, 52]
    47 [23, 11, 3, 1, 37, 52]
    48 [11, 3, 1, 23, 37, 52]
    49 [3, 1, 11, 23, 37, 52]
    50 [1, 3, 11, 23, 37, 52]
    51 '''

    可以看到以上排序每次步骤一致,只有一个变量(即不用对比最后一个元素)

    因此,可以再设置一个变量j, 作为循环时候的变量简化操作,由此得到:

     1 li = [52, 37, 23, 11, 3, 1, ]
     2 print(li)
     3 
     4 for j in range(1, len(li)):
     5     for i in range(len(li) - j):
     6         if li[i] > li[i + 1]:
     7             temp = li[i]
     8             li[i] = li[i+1]
     9             li[i + 1] = temp
    10     print(li)
    11 '''
    12 结果:
    13 [52, 37, 23, 11, 3, 1]
    14 [37, 23, 11, 3, 1, 52]
    15 [23, 11, 3, 1, 37, 52]
    16 [11, 3, 1, 23, 37, 52]
    17 [3, 1, 11, 23, 37, 52]
    18 [1, 3, 11, 23, 37, 52]
    19 '''
  • 相关阅读:
    Python中的垃圾回收机制
    一个很好的复习网站
    数据结构与算法 python语言描述
    数据结构与算法学习链接
    [转] 什么是WSGI
    【转】HTTP协议详解
    【转】Android HTTP协议
    Android获取本机IP地址
    Andrid 多线程下载
    Android 应用程序启动过程源代码分析
  • 原文地址:https://www.cnblogs.com/doble-bern/p/5980760.html
Copyright © 2011-2022 走看看