python --- 冒泡排序算法
别想太多了,这个冒泡排序就是我们脑海中想到的那个冒泡,就好像是气泡一样,较小的元素比较轻,从而要往上浮出来,
冒泡排序算法、
要对‘气泡’序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即‘轻’的元素在下面,就交换它们的位置。显然,处理一遍之后,‘最轻’的元素就浮到了最高的位置;处理两遍之后,‘第二轻的元素’就浮到了第二高的位置。在做第二遍处理时,由于最高位置上的元素已是‘最轻’的元素,所以就不用检查了。一般的,第i遍处理时,不必检查第i高位置以上的元素,因为经过前面i - 1遍的处理,它们已经正确的排好序了。
所以说了这么多干巴巴的理论知识,现在就来点实际的:
1 def bulle_sort(lst): 2 for i in range(len(lst)): 3 for j in range(i + 1, len(lst)): 4 if lst[i] > lst[j]: 5 lst[i], lst[j] = lst[j], lst[i] 6 return lst 7 8 9 print(bulle_sort([3, 2, 4, 1, 7]))
要记住列表索引顾头不顾尾
要理解这个冒泡排序关键点就在于其中的两个for循环
- 外层循环起始值:i = 0
- 内层循环起始值:j = 1
最外层的控制了第一个数,然后就时通过第二层循环不断的和后面的数的一个比较的过程,通过这个过程,在第二个for循环内部调用if语句,将‘最轻’的气泡,提到最上面来
当第一个气泡确定之后,就可以通过循环来确定第二个气泡的位置,然后再利用if语句给调在第二高的位置
然后就是一个周而复始的过程
在这里要注意:
外层循环位置:是从头开始循环,然后一直到末尾
内层循环位置:内层随着外层的循环而循环,所以就不用循环外层的元素,所以要在外层的基础上加上一