Python 冒泡排序算法实现:代码详解及优化
Python 冒泡排序算法实现:代码详解及优化
冒泡排序是一种简单的排序算法,通过比较相邻元素并交换位置,将最大的元素逐渐移动到列表末尾。以下是用 Python 代码实现冒泡排序算法,并对代码进行优化。
原始代码(存在错误):
def bubble(list):
num = 0
n=len(a)
while i < len(a):
for y in range(0,n-1):
if a[num] > a[num+1]:
hbw = a[num]
a[num] = a[num+1]
a[num+1] = hbw
i=i+1
return a
list=int(input("请输入你要排序的数组:"))
bubble(list)
i=0
print(list)
修正后的代码:
def bubble(a):
n = len(a)
for i in range(n):
for j in range(0, n-i-1):
if a[j] > a[j+1]:
a[j], a[j+1] = a[j+1], a[j]
return a
lst = [int(x) for x in input("请输入你要排序的数组(以空格分隔):").split()]
sorted_lst = bubble(lst)
print(sorted_lst)
代码详解:
-
bubble(a)函数:- 函数接收一个列表
a作为参数。 - 使用
len(a)获取列表长度,并赋值给n。 - 使用嵌套循环进行排序:
- 外层循环
for i in range(n)控制比较轮数。 - 内层循环
for j in range(0, n-i-1)逐个比较相邻元素,并将较大的元素交换到后面。
- 外层循环
if a[j] > a[j+1]:比较相邻元素,如果a[j]大于a[j+1],则进行交换。a[j], a[j+1] = a[j+1], a[j]:使用 Python 的元组拆包功能进行高效的元素交换。- 返回排序后的列表
a。
- 函数接收一个列表
-
主函数:
- 使用
input()获取用户输入的待排序数组。 - 使用列表推导将用户输入的字符串分割成整数列表。
- 调用
bubble()函数对列表进行排序。 - 打印排序后的结果。
- 使用
代码优化:
- 使用
range(n)来控制循环次数,避免了原始代码中i的手动递增。 - 使用
n-i-1来控制内层循环范围,减少不必要的比较次数。 - 使用
a[j], a[j+1] = a[j+1], a[j]进行元素交换,简洁高效。 - 代码注释清晰易懂,方便理解代码逻辑。
注意事项:
- 确保用户输入的数组格式正确,并使用空格分隔每个元素。
- 冒泡排序算法的时间复杂度为 O(n^2),对于大型数据集,效率较低。建议使用其他更高效的排序算法,例如快速排序或归并排序。
原文地址: http://www.cveoy.top/t/topic/gQx 著作权归作者所有。请勿转载和采集!