数据结构Python实现-冒泡排序算法

排序算法的稳定性

稳定性:稳定的排序算法会让原本相等键值的记录维持相对稳定。不稳定的排序算法可能会改变相等键值的相对次序,但是稳定的算法从来不会改变。

冒泡排序

如果是按照从小到大的顺序对其进行排序,那么每次都是两两排列,找到这组当中的最大值,并把最大值放到最后。

冒泡排序Python实现代码

def bublesort(alist):
 
    n=len(alist)
    for j in range(n-1):     
        for i in range(0,n-1-j):
            if alist[i] > alist[i+1]:
                alist[i],alist[i+1]=alist[i+1],alist[i]   
    #return alist
                
                
if __name__ =="__main__":
    alist= [1, 2, 4, 8, 7, 9, 0] 
    print(alist)
    bublesort(alist)
    print(alist) 

运行结果为:
[1, 2, 4, 8, 7, 9, 0]
[0, 1, 2, 4, 7, 8, 9]

自己打代码出现的问题

  • if name == ‘main’ 就相当于是 Python 模拟的程序入口。其中注意main前面是两个下划线,后面也是两个下划线,如果写错的话,程序没有入口,导致没有输出结果。
  • if alist[i] > alist[i+1]:
    alist[i],alist[i+1]=alist[i+1],alist[i]
    两个值的交换Python语言不需要加括号
  • print( )输出时,需要加括号
  • range(5)这个5表示的是运行的次数,其返回的是0-4,即运行了5次
  • i,j的范围找不到,不知道从哪里开始,到底是运行几次

代码的核心部分分析

  • 总共有n个数,需要排序n-1次,所以j的运行次数是n-1,一定注意range()括号里面的内容表示的是运行的次数。
    在每次进行排序时,一开始比较n-1次,之后是n-2等,所以i的范围是n-1-j,一开始j的值其实是0.

  • 重点是range

发布了40 篇原创文章 · 获赞 1 · 访问量 2048

猜你喜欢

转载自blog.csdn.net/qq_40660825/article/details/101775690