冒泡排序

题目:对给定一个数组进行排序。

思想:比较两个相邻元素,如果它们的顺序错误,就把它们交换位置。

原理: 每一趟只能将一个数归位, 如果有n个数进行排序,只需将n-1个数归位, 也就是说要进行n-1趟操作(已经归位的数不用再比较)

缺点: 冒泡排序解决了桶排序浪费空间的问题, 但是冒泡排序的效率特别低

时间复杂度:O(n^2)

实现:

"""
冒泡排序
"""
def bubbleSort(nums):
    for i in range(len(nums)-1):    # 这个循环负责设置冒泡排序进行的次数
        for j in range(len(nums)-i-1):  # j为列表下标
            print(nums, 
                  "i={}/{}".format(i, len(nums)-1), 
                  "j={}/{}".format(j, len(nums)-i-1), 
                  "比较:", nums[j], nums[j+1])
            if nums[j] > nums[j+1]:
                nums[j], nums[j+1] = nums[j+1], nums[j]
    return nums

nums = [5,2,45,6,8,2,1]
print(bubbleSort(nums))
[5, 2, 45, 6, 8, 2, 1] i=0/6 j=0/6 比较: 5 2
[2, 5, 45, 6, 8, 2, 1] i=0/6 j=1/6 比较: 5 45
[2, 5, 45, 6, 8, 2, 1] i=0/6 j=2/6 比较: 45 6
[2, 5, 6, 45, 8, 2, 1] i=0/6 j=3/6 比较: 45 8
[2, 5, 6, 8, 45, 2, 1] i=0/6 j=4/6 比较: 45 2
[2, 5, 6, 8, 2, 45, 1] i=0/6 j=5/6 比较: 45 1
[2, 5, 6, 8, 2, 1, 45] i=1/6 j=0/5 比较: 2 5
[2, 5, 6, 8, 2, 1, 45] i=1/6 j=1/5 比较: 5 6
[2, 5, 6, 8, 2, 1, 45] i=1/6 j=2/5 比较: 6 8
[2, 5, 6, 8, 2, 1, 45] i=1/6 j=3/5 比较: 8 2
[2, 5, 6, 2, 8, 1, 45] i=1/6 j=4/5 比较: 8 1
[2, 5, 6, 2, 1, 8, 45] i=2/6 j=0/4 比较: 2 5
[2, 5, 6, 2, 1, 8, 45] i=2/6 j=1/4 比较: 5 6
[2, 5, 6, 2, 1, 8, 45] i=2/6 j=2/4 比较: 6 2
[2, 5, 2, 6, 1, 8, 45] i=2/6 j=3/4 比较: 6 1
[2, 5, 2, 1, 6, 8, 45] i=3/6 j=0/3 比较: 2 5
[2, 5, 2, 1, 6, 8, 45] i=3/6 j=1/3 比较: 5 2
[2, 2, 5, 1, 6, 8, 45] i=3/6 j=2/3 比较: 5 1
[2, 2, 1, 5, 6, 8, 45] i=4/6 j=0/2 比较: 2 2
[2, 2, 1, 5, 6, 8, 45] i=4/6 j=1/2 比较: 2 1
[2, 1, 2, 5, 6, 8, 45] i=5/6 j=0/1 比较: 2 1
[1, 2, 2, 5, 6, 8, 45]
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 简化版的 桶排序 不仅仅有上一节所遗留的问题,更要命的是:它非常浪费空间!例如需要排序数的范围是 0~210000...
    青葱烈马阅读 393评论 0 0
  • 冒泡排序的基本思想是:每次比较两个相邻的元素,如果它们的顺序错误就把它们交换过来。 例如我们需要将12 35 99...
    Leon_hy阅读 424评论 0 1
  • 项目需要,自己上学的时候接触过一些算法,我记得当时算法那门考了系里最高分,98分,想着没什么用呢,谁知道这两天就用...
    爱尚开发阅读 1,934评论 0 3
  • 冒泡排序 思想: 每次比较相邻的元素,如果它们的顺序不是你想要的就把它们交换过来, 冒泡排序 原理: 每趟排序只能...
    JiangRain阅读 232评论 0 0
  • Java中的经典算法之冒泡排序(BubbleSort) 原理:比较两个相邻的元素,将值大的元素交换至右端。 思路:...
    longmingren123阅读 2,391评论 0 0

友情链接更多精彩内容