python实现短冒泡排序
冒泡排序是常用的排序算法之一,但是它过于低效。通常的冒泡排序有两大缺点:
第一:是每一个元素都需要经过若干次交换才能找到自己的位置,尤其是位于前端的较大的元素。
第二:假如数组在冒泡排序的途中已经排好了正确的顺序,算法还是会迭代直到最后第一个元素,造成了时间性能上的浪费。
短冒泡排序是针对第二种情况提出的解决方案,加入一个布尔型变量,记录本次循环是否存在交换现象,如果一次都没有交换,那么说明已经有序,输出数组即可。
python实现:
def shortBubbleSort(alist):
#设置布尔型变量
exchanges = True
#检测布尔型变量是否发生改变
while exchanges:
#设置循环时的初始值为False
exchanges = False
for pos in range(len(alist)-1,0,-1):
for i in range (pos):
if alist[i] > alist[i+1]:
alist[i],alist[i+1] = alist[i+1],alist[i]
#若交换发生则变量摇摆为True
exchanges = True
return alist
alist = [2,34,4,1,5,78,999]
print(shortBubbleSort(alist))
[1,2,4,5,34,78,999]