一文带你学习 Python 冒泡排序

冒泡排序是一种用于对列表中的元素进行排序(按升序或降序重新排列)的基本算法。

步骤如下:

  1. 逐个元素地遍历列表

  2. 遇到任何两个相邻的“错误”的顺序(升序或降序)的元素时,交换它们在列表中的位置,否则什么也不做

  3. 这样做直到迭代到达列表的末尾

重复步骤 1 到 3,直到“错误”顺序中不再有任何相邻元素,然后停止

编写一个函数,该函数接受两个参数、一个字母列表和一个指定排序顺序,使用冒泡排序算法,让此函数返回输入列表的排序版本。

例如:f([‘x’, ‘c’, ‘b’, ‘v’, ‘z’, ‘a’], “升序”) => [‘a’, ‘b’, ‘c’, ’ v’,‘x’,‘z’]

注意:类型检查(或异常处理)是必要的,忽略大小写敏感。

以下完整的代码,本文将逐一解释。

def bubble_sort(list_items, order):
    """Sorts a list using Bubble sort"""

    size_of_list = len(list_items)
    for j in range(size_of_list - 1):
        for i in range(size_of_list - 1):

            # Ascending order
            if order == 'a' or order == 'A':
                if list_items[i].lower() > list_items[i + 1].lower():
                    temp = list_items[i + 1]
                    list_items[i + 1] = list_items[i]
                    list_items[i] = temp

            # 降序
            elif order == 'd' or order == 'D':
                if list_items[i + 1].lower() > list_items[i].lower():
                    temp = list_items[i]
                    list_items[i] = list_items[i + 1]
                    list_items[i + 1] = temp

            else:
                return print("Invalid order! Enter either 'a' or 'd'")

    return print(list_items)


# 排序有两者选择: 升序、降序
list_item = ['v', 'e', 'r', 't', 'i', 'c', 'a', 'l']

# 方法调用
bubble_sort(list_item, 'a')             
bubble_sort(list_item, 'd')             
bubble_sort(list_item, 'z')

首先,我们定义函数bubble_sort(),它接受两个参数,一个列表和排序顺序。接下来,我们使用len()函数在给定列表中找到列表项的数量。

def bubble_sort(list_items, order):
    """Sorts a list using Bubble sort"""

    size_of_list = len(list_items)   

接下来,我们使用两个for循环进行排序。如果列表的长度为 7,我们将对列表进行 6 × 6 = 36 次排序,以确保列表完全按照给定顺序排序。

 for j in range(size_of_list - 1):
        for i in range(size_of_list - 1):

如果选择升序,则检查列表项与下一项,如果该项大于与它交换位置的下一项,否则它保持原位,并与下一项进行检查。这一直持续到我们到达倒数第二个列表项;之后我们从头开始直到size_of_list - 1。

 # 升序
if order == 'a' or order == 'A':
if list_items[i].lower() > list_items[i + 1].lower():
temp = list_items[i + 1]
list_items[i + 1] = list_items[i]
list_items[i] = temp

如果选择了降序,则将列表项与下一项进行检查,如果小于下一项,则与之交换位置,否则保持原位,并与下一项进行检查。这一直持续到我们到达倒数第二个列表项;之后我们从头开始直到size_of_list - 1。

  # 降序
  elif order == 'd' or order == 'D':
      if list_items[i + 1].lower() > list_items[i].lower():
           temp = list_items[i]
           list_items[i] = list_items[i + 1]
           list_items[i + 1] = temp

如果订单错误;也就是说,既没有选择升序也没有选择降序,我们在屏幕上打印一个错误。

else:
return print("Invalid order! Enter either 'a' or 'd'")

排序后,打印出排序后的列表。

     return print(list_items)

最后,我们创建一个订单列表并将其传递给一个函数。当升序、降序以及选择错误的顺序时,我们会检查列表排列。

list_item = ['v', 'e', 'r', 't', 'i', 'c', 'a', 'l']      bubble_sort(list_item, 'a')            bubble_sort(list_item, 'd')              bubble_sort(list_item, 'z')      

输出

['a', 'c', 'e', 'i', 'l', 'r', 't', 'v']
['v', 't', 'r', 'l', 'i', 'e', 'c', 'a']
Invalid order! Enter either 'a' or 'd'

学习资源推荐

除了上述分享,如果你也喜欢编程,想通过学习Python获取更高薪资,这里给大家分享一份Python学习资料。

这里给大家展示一下我进的最近接单的截图

私单

😝朋友们如果有需要的话,可以点击下方链接领取或者V扫描下方二维码联系领取,也可以内推兼职群哦~

🎁 CSDN大礼包,二维码失效时,点击这里领取👉:【学习资料合集&相关工具&PyCharm永久使用版获取方式】

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

1.Python学习路线

image-20230619144606466

python学习路线图1

2.Python基础学习

01.开发工具

02.学习笔记

在这里插入图片描述

03.学习视频

在这里插入图片描述

3.Python小白必备手册

图片

4.数据分析全套资源

在这里插入图片描述

5.Python面试集锦

01.面试资料

在这里插入图片描述

在这里插入图片描述

02.简历模板

在这里插入图片描述

🎁 CSDN大礼包,二维码失效时,点击这里领取👉:【学习资料合集&相关工具&PyCharm永久使用版获取方式】

因篇幅有限,仅展示部分资料,添加上方即可获取👆

------ 🙇‍♂️ 本文转自网络,如有侵权,请联系删除 🙇‍♂️ ------
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值