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)

代码详解:

  1. 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
  2. 主函数:

    • 使用 input() 获取用户输入的待排序数组。
    • 使用列表推导将用户输入的字符串分割成整数列表。
    • 调用 bubble() 函数对列表进行排序。
    • 打印排序后的结果。

代码优化:

  • 使用 range(n) 来控制循环次数,避免了原始代码中 i 的手动递增。
  • 使用 n-i-1 来控制内层循环范围,减少不必要的比较次数。
  • 使用 a[j], a[j+1] = a[j+1], a[j] 进行元素交换,简洁高效。
  • 代码注释清晰易懂,方便理解代码逻辑。

注意事项:

  • 确保用户输入的数组格式正确,并使用空格分隔每个元素。
  • 冒泡排序算法的时间复杂度为 O(n^2),对于大型数据集,效率较低。建议使用其他更高效的排序算法,例如快速排序或归并排序。
Python 冒泡排序算法实现:代码详解及优化

原文地址: http://www.cveoy.top/t/topic/gQx 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录