def bubbleSort(myList): # 首先获取list的总长度,为之后的循环比较作准备 length = len(myList) # 一共进行几轮列表比较,一共是(length-1)轮 for i in range(0, length): print("i",i) # 每一轮的比较,注意range的变化,这里需要进行length-1-长的比较,注意-i的意义(可以减少比较已经排好序的元素) for j in range(0, length - 1 - i): # 交换 if myList[j] > myList[j + 1]: tmp = myList[j] myList[j] = myList[j + 1] myList[j + 1] = tmp# 打印每一轮交换后的列表 print(myList) print("=============================") return myList
改进:
def bubbleSort(myList): # 首先获取list的总长度,为之后的循环比较作准备 length = len(myList) # 一共进行几轮列表比较,一共是(length-1)轮 for i in range(0, length): print("i",i) flag = False # 改进版本,如果本来就是有序的就只需要比较一趟时间复杂度为O(n) # 每一轮的比较,注意range的变化,这里需要进行length-1-长的比较,注意-i的意义(可以减少比较已经排好序的元素) for j in range(0, length - 1 - i): # 交换 if myList[j] > myList[j + 1]: tmp = myList[j] myList[j] = myList[j + 1] myList[j + 1] = tmp flag = True # 打印每一轮交换后的列表 print(myList) print("=============================") if flag == False: break return myList
时间复杂度:
平均:O(n^2)
最好:O(n) (递增/递减)
最坏:O(n^2) (递减/递增)
空间复杂度:O(1)
稳定性:稳定