冒泡排序其实就是多次遍历列表,比较相邻的两项交换那些无序的项目。
放上图会更好理解吧
第一次遍历结束之后可以看到93这个最大值就放在了最末尾的位置,那么93固定下来了,就开始对93之外的序列做遍历。
第二大的值便会固定在导数第二的位置。
依次类推完成排序。
def bubbleSort(alist):
for i in range(len(alist)-1,0,-1): #因为每次遍历一次列表之后,最后一项无许再去作比较。而每次遍历也只需要比较n-1次
for j in range(i):
if alist[j] > alist[j+1]:
#交换无序的两列
temp = alist[j]
alist[j] = alist[j+1]
alist[j+1] = temp
当然,如果说已经排好序的项其实是不用进行比较的。
def shortBubbleSort(alist):
exchange = True #初始化一个标识
passnum = len(alist) - 1 #比较的次数
while passnum > 0 and exchange:
exhcange = False #当一个子序列的i项都不比i+1