python 冒泡排序

array=[22,33,44,11,2,45]
for i in range(len(array)-1,0,-1):
    for j in range(0,i):
            if array[j]>array[j+1]:
                    c=array[j+1]
                    array[j+1]=array[j]
                    array[j]=c
for i in range(len(array)):
	print array[i]

冒泡排序
冒泡排序是一种简单的排序算法,它通过重复地遍历要排序的列表,比较相邻的元素,并交换它们的位置来工作。这个过程会重复进行,直到没有需要交换的元素为止,这时列表就已经排序完成。 下面是一个用 Python 实现的冒泡排序算法示例代码: ```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 return arr # 示例使用 arr = [64, 34, 25, 12, 22, 11, 90] sorted_arr = bubble_sort(arr) print("排序后的数组:", sorted_arr) ``` 输出结果将会是: ``` 排序后的数组: [11, 12, 22, 25, 34, 64, 90] ``` 冒泡排序的基本步骤包括: - **比较相邻元素**:从列表的第一个元素开始,比较相邻的两个元素。 - **交换位置**:如果前一个元素比后一个元素大,则交换它们的位置。 - **重复遍历**:重复上述步骤,直到没有需要交换的元素为止。 - **优化**:通过设置标志位,可以在列表已经有序的情况下提前退出,减少不必要的比较。 冒泡排序的时间复杂度为: - 最坏情况:O(n²) —— 当列表是逆序的时候。 - 最好情况:O(n) —— 当列表已经有序的时候。 - 平均情况:O(n²) 冒泡排序的空间复杂度为 O(1),因为它是一种原地排序算法,不需要额外的存储空间。 此外,冒泡排序还可以通过递归的方式来实现。以下是递归实现冒泡排序的一个例子: ```python def recursive_bubble_sort(arr, n=None): if n is None: n = len(arr) if n == 1: return arr for i in range(n - 1): if arr[i] > arr[i + 1]: # 交换元素 arr[i], arr[i + 1] = arr[i + 1], arr[i] return recursive_bubble_sort(arr, n - 1) # 测试 arr3 = [8, 3, 7, 4, 2, 9] print(recursive_bubble_sort(arr3)) # 输出:[2, 3, 4, 7, 8, 9] ``` 冒泡排序虽然简单,但在实际应用中效率较低,通常不适用于大数据量的排序任务。然而,对于教学目的或者小数据集,它仍然是一个很好的学习工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值