本文章属于转载,但是再最后的冒泡教程中,我写了自己的理解以及自己的一些建议,有什么不懂得,可以直接留言问我!

作者:f_chenchen

对列表的数据进行排序:
方法一:
直接用列表自带函数排序,.sort()方法默认升序,将参数reverse改为True,改为降序:

list = [7, 4, 3, 67, 34, 1, 8]
list.sort()
print(list)

[1, 3, 4, 7, 8, 34, 67]
list.sort(reverse = True)
print(list)

[67, 34, 8, 7, 4, 3, 1]

方法二:

for循环,从list中取最小值,插入到一个空列表(用append默认插入列表最后边),然后把原列表中的最小值删除,再次取最小值,循环len(list)次。如果要求倒序,把min改为max即可:

list = [7, 4, 3, 67, 34, 1, 8]
a= []
for i in range(len(list)):
    a.append(min(list))
    list.remove(min(list))
print(a)

[1, 3, 4, 7, 8, 34, 67]

方法三:

冒泡排序:从小到大,比较相邻的元素,如果前一个比后一个大,交换之。
a是外层,轮,b是内层,次
len(list) = 7
第一轮:
a = 0
b in range(6),循环执行6次
第一次 4,7比较,比较后[4,7, 3, 67, 34, 1, 8]
第二次 7,3比较,比较后[4,3, 7, 67, 34, 1, 8]
……
第六次 8,67比较,比较后[4, 3, 7, 34, 1, 8, 67]

第二轮:
a = 1
b in range(5),循环执行5次(因为在第一轮已经将最大值67判断出来,不用再和67做比较)
第一次 4,3比较,比较后[3, 4, 7, 34, 1, 8, 67]
第二次 4,7比较,比较后[3, 4, 7, 34, 1, 8, 67]
第五次34,67比较,比较后[3, 4, 7, 1, 8, 34, 67]

第三轮:
a = 2
b in range(4),循环执行4次,34,67的顺序已经比较出来
第一次3,4比较,比较后[3, 4, 7, 1, 8, 34, 67]
第二次4,7比较,比较后[3, 4, 7, 1, 8, 34, 67]
第三次7,1比较,比较后[3, 4, 1, 7, 8, 34, 67]
第四次7,8比较,比较后[3, 4, 1, 7, 8, 34, 67]

第四轮:
a = 3
b in range(3),循环执行3次,8,34,67的顺序已经比较出来
第一次3,4比较,比较后[3, 4, 1, 7, 8, 34, 67]
第二次4,1比较,比较后[3, 1, 4, 7, 8, 34, 67]
第三次4,7比较,比较后[3, 1, 4, 7, 8, 34, 67]

第五轮:
a = 4
b in range(2),循环执行两轮7,8,34,67的顺序已经比较出来
第一次3,1比较,比较后[1, 3, 4, 7, 8, 34, 67]
第二次3,4比较,比较后[1, 3, 4, 7, 8, 34, 67]

第六轮
a = 5
b in range(1),循环执行一轮,4, 7, 8, 34, 67的顺序已经比较出来
第一次,1,3比较,比较后[1, 3, 4, 7, 8, 34, 67]

此时,轮和次都循环完毕,排序完成
从大到小的顺序,把 if list[b] > list[b+1]改为if list[b] < list[b+1]即可

list = [7, 4, 3, 67, 34, 1, 8]
for a in range(len(list)):
    for b in range(len(list)-a-1):
        if list[b] > list[b+1]:
            list[b+1],list[b]=list[b],list[b+1]
print(list)

自己得理解:

#使用冒泡方法进行排序!
#资料、学生的成长档案!
test1 = [2,56,1,767,33,88,22]
for i in range(len(test1)):#这个是一共循环7次,从零开始,一直到7
    #第一次运行,a是零。次数是6
    #第二次运行,a是1;次数是6
    #但是由于第一次的数字换到了第二个数,第二个数往再根据后面坐标a+1,进行比对
    #第二个for循环体结束,一个数的位置:
    #这个是无法用言语表达,建议各位兄弟不要急,有时间就看看,就算暂时没懂,也没事
    #多看看视频教学,看不同老师的讲解
    #我看了两三天才会,过来人经验,不要急!!
    #第二个循环体结束后,会再次执行第一个for,i变成了1
    #然后再次执行第二个for,此时第二个就变成了for i in range(5)),因为最大数经过第一轮的运行,已经确定了最大数
    for a in range(len(test1)-i-1):#这个第一次执行就循环6次,因为要进行6次比对,然后比过之后就不用再比,就减去每次执行的i
        if test1[a]>test1[a+1]:
            test1[a],test1[a+1]=test1[a+1],test1[a]
print(test1)