码迷,mamicode.com
首页 > 其他好文 > 详细

冒泡法

时间:2019-08-24 18:52:31      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:结束   退出   完成   通过   标签   比较   中间   设定   比较大小   

冒泡法

标签(空格分隔): python-排序算法


冒泡法介绍

  • 三大基础排序算法之一
  • 冒泡法
    • 属于交换排序
    • 两两比较大小, 交换位置。
    • 结果分为升序和降序排序
  • 时间复杂度
    • n * (n - i - 1) = n**2

代码实现

lst = [5, 6, 7, 8, 9, 10, 11, 12, 15, 14]   # 待排序列表
length = len(lst)    # 长度
count = 0   # 计数统计

for i in range(length):
    Flag = True
    for j in range(length - i - 1):
        if lst[j] > lst[j+1]:
            Flag = False    # 如果在一轮比较中,没有发生交换则表示排序已经完成
            count += 1  # 统计效率
            lst[j], lst[j+1] = lst[j+1], lst[j]
    if Flag:    # 使用标记来控制提速
        break

print(lst)
print(count)
  • [x] 唯一的优化思路:
  • 通过加标记 Flag,如果在一轮比较中,没有发生交换则表示排序已经完成, 可以直接退出排序了

冒泡法总结

  • 冒泡法需要数据一轮轮比较
  • 可以设定一个标记判断此轮是否有数据发生交换,如果没有发生交换,可以结束排序,如果发生交换,则继续下一轮排序
  • 最差的排序情况: 初始顺序与目标顺序完全相反,则遍历次数为: n * (n-1)/2
  • 最好的排序情况: 初始顺序与目标顺序完全相同,则遍历次数为: n-1 次
  • 时间复杂度: O(n**2)
  • 空间复杂度: O(1) ---> 只使用了一个中间变量

冒泡法

标签:结束   退出   完成   通过   标签   比较   中间   设定   比较大小   

原文地址:https://www.cnblogs.com/jingru-QAQ/p/11405519.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!