标签:假设 nbsp 应该 冒泡算法 col 最大数 span 长度 turn
冒泡规则:
冒泡的次数:
每次冒泡的比较次数:
关系图如下:
第几次冒泡 | 比较的次数 |
1 | n-1 |
2 | n-2 |
3 | n-3 |
4 | n-4 |
根据以上分析,我们找出了冒泡次数和比较次数的关系,接下来就可以通过找码来实现了
1 a = [1,5,2,3,8,9] 2 def func(li): 3 n = len(li) 4 # 遍历列表长度减1 5 for i in range(1,n ): 6 # 创建一个变量,用来记录本轮冒泡是否有数据交换位置 7 status = False 8 # 每次遍历都获取第一个元素,依次和后面的元素进行比较 9 for j in range(n - i ): 10 # 判断当前元素与后一个元素的值 11 if li[j] > li[j+1]: 12 # 交换当前元素与后一个元素的值 13 li[j],li[j+1] = li[j+1],li[j] 14 # 只要有数据交换位置,则修改status的值 15 status = True 16 # 每一轮冒泡结束之后,判断当前的status是否为False,如果为False, 17 # 则说明一轮冒泡没有修改任何数据的顺序,即表示列表是有序的,则直接返回,无需重复循环 18 if not status: 19 return li 20 21 return li 22 23 print(func(a))
柠檬班
标签:假设 nbsp 应该 冒泡算法 col 最大数 span 长度 turn
原文地址:https://www.cnblogs.com/listong/p/12468722.html