zoukankan      html  css  js  c++  java
  • python之冒泡排序(一)

    冒泡排序

    冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。

    遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

    冒泡排序算法的运作如下:

    • 比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个。

    • 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。

    • 针对所有的元素重复以上的步骤,除了最后一个。

    • 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

    代码实现:

    def bubbleSort(nums):
    for i in range(len(nums)-1): #i代表这个循环负责设置冒泡排序进行的次数
    for j in range(len(nums)-i-1): #j是列表的下角标
    if nums[j] > nums[j+1]: #升序
    t = nums[j]
    nums[j]=nums[j+1]
    nums[j+1]=t
    return nums

    nums = [6,3,45,7,9,3,2]
    print(bubbleSort(nums))

    时间复杂度

    • 最优时间复杂度:O(n) (表示遍历一次发现没有任何可以交换的元素,排序结束。)
    • 最坏时间复杂度:O(n2)
    • 稳定性:稳定
    由此可知,冒泡排序的时间复杂度为:O(N^2)

    另外,可以利用sorted()方法实现排序的方法。

    代码如下:
    #利用sorted()方法排序,并使用reverse字段实现降序
    print(sorted(nums, reverse=True))
    print(sorted(nums)) #正序


    若长生难求以命为注 方冥冥如悟因果殊途 --《长生》
  • 相关阅读:
    Oracle列转行函数使用
    JavaScript笔记整理
    23种设计模式之桥梁模式
    23种设计模式之状态模式
    23种设计模式之解释器模式
    23种设计模式之备忘录模式
    23种设计模式之访问者模式
    23种设计模式之观察者模式
    23种设计模式之组合模式
    23种设计模式之适配器模式
  • 原文地址:https://www.cnblogs.com/hc1hr2/p/9982626.html
Copyright © 2011-2022 走看看