Python冒泡算法及原理

本文详细介绍了冒泡排序的基本原理和Python实现,包括其工作流程和效率提升的优化策略。重点强调了冒泡排序在遇到已排序部分时的优化终止条件。
摘要由CSDN通过智能技术生成

Python冒泡算法及原理

冒泡排序(Bubble Sort)是一种简单的排序算法,它通过重复地交换相邻元素的位置来进行排序。冒泡排序的原理如下:

1.从列表的第一个元素开始,比较相邻的两个元素,如果顺序不符合要求(比如递增排序时前面的元素大于后面的元素),则交换它们的位置。

2.继续比较相邻的元素,直到最后一个元素。经过第一轮遍历后,在列表中最大的元素会被排在最后一位。

3.重复执行上述步骤,每次遍历都会将当前范围内最大的元素移动到正确的位置。

4.每一轮遍历完成后,未排序部分的最大值会沉底,逐渐形成有序序列。

以下是冒泡排序算法的Python实现:

def bubble_sort(arr):
    n = len(arr)
    
    for i in range(n):
        # 标记是否发生过交换
        swapped = False
        
        for j in range(0, n-i-1):
            if arr[j] > arr[j+1]:
                # 交换元素
                arr[j], arr[j+1] = arr[j+1], arr[j]
                swapped = True
        
        # 如果本轮没有发生交换,则表示列表已经有序,提前结束
        if not swapped:
            break

# 测试
arr = [64, 34, 25, 12, 22, 11, 90]
bubble_sort(arr)

print("排序后的数组:", arr)

这段代码演示了如何使用冒泡排序对一个整数数组进行排序。在每次遍历中,如果没有发生任何元素交换,算法会提前结束,因为列表已经是有序的。冒泡排序虽然简单,但对于大型数据集并不高效,因为其时间复杂度为。

当冒泡排序算法在内部循环中没有发生任何交换时,可以利用这一特性提前终止外部循环,因为这表示列表已经是有序的,不需要继续排序。

以下是优化后的冒泡排序算法代码示例,包含了这个优化:

def bubble_sort(arr):
    n = len(arr)
    
    for i in range(n):
        # 标记是否发生过交换
        swapped = False
        
        for j in range(0, n-i-1):
            if arr[j] > arr[j+1]:
                # 交换元素
                arr[j], arr[j+1] = arr[j+1], arr[j]
                swapped = True
        
        # 如果本轮没有发生交换,则表示列表已经有序,提前结束
        if not swapped:
            break

# 测试
arr = [64, 34, 25, 12, 22, 11, 90]
bubble_sort(arr)

print("排序后的数组:", arr)

这种优化能够减少对于已经有序列表的不必要比较和交换操作,提高了冒泡排序的效率。

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值