冒泡排序

Posted xone

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡排序相关的知识,希望对你有一定的参考价值。

冒泡排序基础知识:

交换两个变量的值:

方法一:

a1 = 123
a2 = 546
a1,a2=a2,a1
print(a1,a2)

以上代码执行结果

546 123

方法二:

a1 = 123
a2 = 546
temp = a1
a1 = a2
a2 = temp
print(a1,a2)

以上代码执行结果:

546 123

 

冒泡排序: 对相邻的两位进行比较,大小顺序不对就交换位置:

升序排列

对列表进行第一次排序:

li = [8,55,53,1]
for i in range(len(li)-1):    #第一次排序,要经过总个数减一次。
    if li[i] > li[i + 1]:
        li[i], li[i + 1] = li[i + 1], li[i]
print(li)

以上代码执行结果:

[8, 53, 1, 55]

每次排序后,最后一位不用再排列,4个数最多经过3次排序可以排完。

li = [8,55,53,1]

for i in range(len(li)-1):
    if li[i] > li[i + 1]:
        li[i], li[i + 1] = li[i + 1], li[i]
print(li)


for i in range(len(li)-2):
    if li[i] > li[i + 1]:
        li[i], li[i + 1] = li[i + 1], li[i]
print(li)

for i in range(len(li)-3):
    if li[i] > li[i + 1]:
        li[i], li[i + 1] = li[i + 1], li[i]
print(li)

以上代码执行结果:

[8, 53, 1, 55]
[8, 1, 53, 55]
[1, 8, 53, 55]

最终代码:

li = [8,55,53,1]
for j in range(1,len(li)):     # 排序次数为列表元素总个数减一
    for i in range(len(li)-j):  # 每次排序后,最后一位不用再排列
        if li[i] > li[i+1]:
            li[i],li[i+1]=li[i+1],li[i]
    print(li)

以上代码执行结果

[8, 53, 1, 55]
[8, 1, 53, 55]
[1, 8, 53, 55]

 

冒泡排序效率很低。

 

以上是关于冒泡排序的主要内容,如果未能解决你的问题,请参考以下文章

java冒泡排序法代码

python代码实现鸡尾酒排序(双向冒泡排序)

冒泡排序python代码

视频+图文+动画详解冒泡排序

交换排序(冒泡排序快速排序的算法思想及代码实现)

C语言冒泡排序。