冒泡排序原理:
冒泡排序算法的运作如下:(从后往前)

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

Logo

学大模型,用大模型上飞桨星河社区!每天8点V100G算力免费领!免费领取ERNIE 4.0 100w Token >>>

更多推荐