1.冒泡排序的核心思想是交换,
2.冒泡排序一趟只确定一个元素,
3.冒泡排序的最好时间复杂度为O(n),通常为O(n^2)
def Bubble_Sort(li): for i in range(len(li)-1):##总共执行的趟数 for j in range(len(li)-1-i):##每一趟需要走过的元素数量 if li[j]>li[j+1]:##判断大小 li[j],li[j+1] =li[j+1],li[j]#完成交换 import random li = list(range(30)) random.shuffle(li) print(li) Bubble_Sort(li) print(li) [9, 5, 15, 7, 24, 3, 12, 28, 25, 8, 19, 2, 21, 4, 22, 10, 29, 18, 26, 14, 6, 1, 16, 0, 27, 20, 11, 23, 17, 13] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
另外冒泡排序还可以控制无效的遍历,当列表已经有序时,我们可以通过设置变量,让函数提前跳出循环,从而减少函数运行时间,提升效率。
def Bubble_Sort1(li): for i in range(len(li)-1):#执行的趟数 print(li) exchange = False###设置检测变量, for j in range(len(li)-1-i): if li[j] > li[j + 1]: li[j],li[j+1] = li[j+1],li[j] # print(li) exchange = True if not exchange: return li
设置一个具体例子来看:
def Bubble_Sort(li): # print(li) for i in range(len(li)-1):##总共执行的趟数 print(li) for j in range(len(li)-1-i): # print(li) if li[j]>li[j+1]: li[j],li[j+1] =li[j+1],li[j] return li # print(li) def Bubble_Sort1(li): for i in range(len(li)-1):#执行的趟数 # print(li) exchange = False###设置检测变量, for j in range(len(li)-1-i): if li[j] > li[j + 1]: li[j],li[j+1] = li[j+1],li[j] # print(li) exchange = True print(li) if not exchange: return li li = [3,4,5,0,1,2,6,7,8,9] li1 = [3,4,5,0,1,2,6,7,8,9] # print(li) print(Bubble_Sort1(li)) # print(li) print('+++++++') print(Bubble_Sort(li1))
得到结果:
[3, 4, 5, 0, 1, 2, 6, 7, 8, 9] [3, 4, 0, 1, 2, 5, 6, 7, 8, 9] [3, 0, 1, 2, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] +++++++ [3, 4, 5, 0, 1, 2, 6, 7, 8, 9] [3, 4, 0, 1, 2, 5, 6, 7, 8, 9] [3, 0, 1, 2, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
这样就不会无谓的循环了,节省运行次数
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)