过程:
1.从列表的开头处开始,比较前两项数据
2.若这两项数据的顺序不正确(假定要求按升序排列),则调换位置
3.接下来比较第二、三项数据,重复操作,以此类推
4.当进行到最后两项数据时,列表中最大的数据就已经交换到最后一项,此时第一轮运行结束,第n项数据排序完成
5.从列表的开头至第n-1项,进行第2轮排序,第2轮结束后第n-1项至第n项的排序就完成了
6.以此类推,直到排序结束
以下是函数代码
def bubbleSort(lyst):
n = len(lyst)
while n > 1:
i = 1 # Start each bubble
while i < n:
if lyst[i] < lyst[i - 1]: # Exchange if needed
swap(lyst, i, i - 1)
i += 1
n -= 1
#与上篇文章相同,我们定义了一个用于交换位置的代码
def swap(lyst, i, j):
temp = lyst[i]
lyst[i] = lyst[j]
lyst[j] = temp
最先完成排序的是列表的末尾,为了演示这一点,我们在每轮排序结束之后打印出 该轮所操作列表的末项
def bubbleSort(lyst):
n = len(lyst)
while n > 1:
i = 1 # Start each bubble
while i < n:
if lyst[i] < lyst[i - 1]: # Exchange if needed
swap(lyst, i, i - 1)
i += 1
print(lyst[n-1])
n -= 1
def swap(lyst, i, j):
temp = lyst[i]
lyst[i] = lyst[j]
lyst[j] = temp
#定义一个无序列表list1
list1 = [33,5,7,19]
#运行
bubbleSort(list1)
运行结果如下
33
19
7
>>>