[DNFM0002] 冒泡排序法

假设待排序序列为:5 4 3 2 1。

一、原理

每一轮将一个最大的数沉底。

第一轮(两两比较4次5-i=4,i代表第几轮):
4 5 3 2 1
4 3 5 2 1
4 3 2 5 1
4 3 2 1 5

第二轮(两两比较3次5-i=3
3 4 2 1 5
3 2 4 1 5
3 2 1 4 5

第三轮(两两比较2次5-i=2
2 3 1 4 5
2 1 3 4 5

第四轮(两两比较1次5-i=1
1 2 3 4 5

总结规律:
  1. 一共有5个数。
  2. 一共进行(5-1)轮。
  3. 每轮进行(5 - 第几轮)次两两比较。

二、编程实现

以下是Python实现代码:

# -*- coding:utf-8 -*-

def swap(list, i, j):
    tmp = list[i]
    list[i] = list[j]
    list[j] = tmp

def bubble(list):
    for i in range(len(list) - 1):
        for j in range(len(list) - i - 1):
            if list[j] > list[j+1]:
                swap(list, j, j + 1)

l = [5, 4, 3, 2, 1]
print "Before sorting:", l
bubble(l)
print "After sorting:", l

运行结果:

Before sorting: [5, 4, 3, 2, 1]
After sorting: [1, 2, 3, 4, 5]

DNFM0002(10)

猜你喜欢

转载自blog.csdn.net/hanjing_csdn/article/details/79320970