冒泡排序是一种用于对列表中的元素进行排序(按升序或降序重新排列)的基本算法。
步骤如下:
-
逐个元素地遍历列表
-
遇到任何两个相邻的“错误”的顺序(升序或降序)的元素时,交换它们在列表中的位置,否则什么也不做
-
这样做直到迭代到达列表的末尾
重复步骤 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学习资料。
学习资源推荐
除了上述分享,如果你也喜欢编程,想通过学习Python获取更高薪资,这里给大家分享一份Python学习资料。
这里给大家展示一下我进的兼职群和最近接单的截图
![私单](https://i-blog.csdnimg.cn/blog_migrate/0d6d3829a1e8a78729fbb96ed6d4c666.png)
😝朋友们如果有需要的话,可以V扫描下方二维码联系领取,也可以内推兼职群哦~
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
### 1.Python学习路线
2.Python基础学习
01.开发工具
02.学习笔记
03.学习视频
3.Python小白必备手册
4.数据分析全套资源
5.Python面试集锦
01.面试资料
02.简历模板
因篇幅有限,仅展示部分资料,添加上方即可获取👆
------ 🙇♂️ 本文转自网络,如有侵权,请联系删除 🙇♂️ ------