冒泡排序是一种用于对列表中的元素进行排序(按升序或降序重新排列)的基本算法。
步骤如下:
重复步骤 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'
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。