xone

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

冒泡排序基础知识:

交换两个变量的值:

方法一:

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]

 

冒泡排序效率很低。

 

posted on 2017-05-01 19:54  周小百  阅读(132)  评论(0编辑  收藏  举报