基于递归的冒泡排序算法代码,之前发过的排序算法代码请参考Python版快速排序算法,Python版选择排序算法,Python版冒泡法排序算法。
from random import randint
def bubbleSort(lst, end=None, reverse=False):
if end==None:
length = len(lst)
else:
length = end
if length<=1:
return
#flag用来标记本次扫描过程中是否发生了元素的交换
flag = False
for j in range(length-1):
#比较相邻两个元素大小,并根据需要进行交换
#默认升序排序
exp = 'lst[j] > lst[j+1]'
#如果reverse=True则降序排序
if reverse:
exp = 'lst[j] < lst[j+1]'
if eval(exp):
lst[j], lst[j+1] = lst[j+1], lst[j]
flag = True
#如果没有发生元素交换,则表示已按序排列
if flag==False:
return
else:
#对剩余的元素进行排序
bubbleSort(lst, length-1, reverse)
#测试
lst = [randint(1, 100) for i in range(20)]
print('Before sort:\n', lst)
#升序排序
bubbleSort(lst)
#降序排序
#bubbleSort(lst, reverse=True)
print('After sort:\n', lst)