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 '''
  • 相关阅读:
    Java中的Iterator的用法
    Java中Collection与Collections的区别
    hashCode()
    网络安全态势感知(NSSA)----引言
    并发与并行
    进程和线程的关系
    由默认参数list引起的疑惑——python
    python堆和栈在list的表现
    一个解决python抓取中文网页乱码的办法
    python编写调用shell命令脚本
  • 原文地址:https://www.cnblogs.com/doble-bern/p/5980760.html
Copyright © 2011-2022 走看看