python实现冒泡排序的两种方式,简单易懂
def bubble_sort_up(lst):"""冒泡排序,从小到大:param lst: 需要排序的序列元素:return: 排好序的序列元素"""times = len(lst) - 1# 循环次数while times > 0:for i in range(0, times):if lst[i] > lst[i + 1]:# 升序用>,降序用<
·
冒泡排序原理:
冒泡排序算法的运作如下:(从后往前)
1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3.针对所有的元素重复以上的步骤,除了最后一个。
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。(所以内层层循环的循环次数递减)
下面先举个手动排序的例子帮助理解——
接下来程序实现——
方法一、用while循环控制循环次数
def bubble_sort_up(lst):
"""
冒泡排序,从小到大
:param lst: 需要排序的序列元素
:return: 排好序的序列元素
"""
times = len(lst) - 1 # 循环的列表数据下标,作为内层循环的循环次数
while times > 0:
for i in range(0, times):
if lst[i] > lst[i + 1]: # 升序用>,降序用<
lst[i], lst[i + 1] = lst[i + 1], lst[i]
times -= 1
return lst
def bubble_sort_down(lst):
"""
冒泡排序,从大到小
:param lst: 需要排序的序列元素
:return: 排好序的序列元素
"""
times = len(lst) - 1 # 循环次数
while times > 0:
for i in range(0, times):
if lst[i] < lst[i+1]:
lst[i], lst[i+1] = lst[i + 1], lst[i]
times -= 1
return lst
方法二、用for循环控制循环次数
def bubble_sort_for(lst):
"""
嵌套for循环实现冒泡排序
:param lst:
:return:
"""
for i in range(1,len(lst)):
for j in range(0,len(lst)-i):
if lst[j] > lst[j+1]: #升序用>,降序用<
lst[j],lst[j+1] = lst[j+1],lst[j]
return lst
更多推荐
所有评论(0)