基础冒泡排序
直接上代码:
#冒泡排序
def bubbleSort(needSortList):
for i in range(len(needSortList) - 1):
#当一轮排序完成之后,下一轮需要排序的元素数量就会减1
for j in range(len() - 1 - i):
#将每一轮排序出的最大数冒泡到列表最右端
if needSortList[j] > needSortList[j + 1]:
#Python快捷交换写法
needSortList[j], needSortList[j + 1] = needSortList[j + 1], needSortList[j]
#打印结果(不写不影响排序算法)
print(needSortList)
打印结果:
#需要排序的列表:
needSortList = [1,4,5,6,0]
#运行结果:
[0,1,4,5,6]
冒泡排序优化第一版
依然是代码:
#第一版的优化主要解决的问题:
# 假设排序算法进行到第3次(假设列表长度为10)时,列表就已经排好序。那么程序其实不必再继续运行。
def bubbleSort(needSortList):
for i in range(len(needSortList) - 1):
#设置一个标志以确认列表是否已经完成排序
isSorted = True
for j in range(len(needSortList) - 1 - i):
if needSortList[j] > needSortList[j + 1]:
needSortList[j], needSortList[j + 1] = needSortList[j + 1], needSortList[j]
#这个时候排序还在进行说明排序未完成,程序应该继续执行下去
isSorted = False
#如果isSorted没有被设置为True,说明在某一轮排序时所有的元素位置都没有发生变化,这个时候排
#序就已经完成了,我们需要让程序停止执行了。
if isSorted:
break
print(needSortList)
打印结果:
#需要排序的列表:
needSortList = [1,0,2,3,4]
#程序在运行到[2]以后就停止运行,因为已经是排好序了
#运行结果:
[0,1,2,3,4]