Python实现冒泡排序算法的完整实例

雨后青山
雨后青山
发布时间:2026-10-14 | 2人浏览过
原创

本文详细解析Python中冒泡排序算法的实现原理与步骤。通过具体数组示例演示每一趟排序过程,展示相邻元素比较与交换逻辑,并提供完整的Python代码实现。适合初学者理解基础排序算法的核心机制及Python列表操作。

冒泡排序基本原理

冒泡排序的核心思想直观易懂:较小的元素如同气泡般逐渐浮向序列顶端,而较大的元素则缓缓沉底。

其实现机制在于反复遍历待排序序列,依次比较相邻的两个元素。若顺序错误(即前一个大于后一个),则交换它们的位置,确保较小的值向左移动,较大的值向右移动。经过一轮完整的遍历后,当前未排序部分的最大值会被交换至序列的最右端。随后对剩余未排序部分重复此过程,直到没有发生任何交换操作,表明序列已完全有序。

排序过程示例解析

以下通过具体示例来解释排序过程。

假设初始无序列表为 arr = [7, 6, 5, 3, 9, 2, 8, 1, 4]。

该数列的长度为 len = 9。

开始执行第一趟排序。

设定外层循环变量 i = 1。

当前数组状态为 arr = [7, 6, 5, 3, 9, 2, 8, 1, 4]。

  1. 比较 7 和 6,因 7 > 6,交换位置,数组变为 [6, 7, 5, 3, 9, 2, 8, 1, 4],此时小值在左,大值在右。
  2. 接着比较 7 和 5,因 7 > 5,交换位置,数组变为 [6, 5, 7, 3, 9, 2, 8, 1, 4]。
  3. 继续比较 7 和 3,因 7 > 3,交换位置,数组变为 [6, 5, 3, 7, 9, 2, 8, 1, 4]。
  4. 比较 7 和 9,因 7 < 9,无需交换,数组保持 [6, 5, 3, 7, 9, 2, 8, 1, 4]。
  5. 比较 9 和 2,因 9 > 2,交换位置,数组变为 [6, 5, 3, 7, 2, 9, 8, 1, 4]。
  6. 比较 9 和 8,因 9 > 8,交换位置,数组变为 [6, 5, 3, 7, 2, 8, 9, 1, 4]。
  7. 比较 9 和 1,因 9 > 1,交换位置,数组变为 [6, 5, 3, 7, 2, 8, 1, 9, 4]。
  8. 最后比较 9 和 4,因 9 > 4,交换位置,数组变为 [6, 5, 3, 7, 2, 8, 1, 4, 9]。

第一趟排序共进行了 8 次交换操作,这也意味着内层循环的比较次数为 j = len - i = 9 - 1 = 8 次。

至此,第一趟冒泡排序结束,最大值 9 已正确排列至数组最右侧。

接下来进行第二趟排序。

外层循环变量更新为 i = 2。

当前数组状态为 arr = [6, 5, 3, 7, 2, 8, 1, 4, 9]。

  1. 比较 6 和 5,因 6 > 5,交换位置,数组变为 [5, 6, 3, 7, 2, 8, 1, 4, 9]。
  2. 比较 6 和 3,因 6 > 3,交换位置,数组变为 [5, 3, 6, 7, 2, 8, 1, 4, 9]。
  3. 比较 6 和 7,因 6 < 7,无需交换,数组保持 [5, 3, 6, 7, 2, 8, 1, 4, 9]。
  4. 比较 7 和 2,因 7 > 2,交换位置,数组变为 [5, 3, 6, 2, 7, 8, 1, 4, 9]。
  5. 比较 7 和 8,因 7 < 8,无需交换,数组保持 [5, 3, 6, 2, 7, 8, 1, 4, 9]。
  6. 比较 8 和 1,因 8 > 1,交换位置,数组变为 [5, 3, 6, 2, 7, 1, 8, 4, 9]。
  7. 比较 8 和 4,因 8 > 4,交换位置,数组变为 [5, 3, 6, 2, 7, 1, 4, 8, 9]。

第二趟排序共进行了 7 次交换操作,内层循环的比较次数为 j = len - i = 9 - 2 = 7 次。

至此,第二趟冒泡排序结束,此时数组状态为 arr = [5, 3, 6, 2, 7, 1, 4, 8, 9]。

。。。

后续过程依此类推,继续逐趟比较并交换,直到整个数组完全有序,即 arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]。

对于长度为 9 的数组,总共需要进行 8 趟排序。

Python代码实现

以下是使用 Python 语言实现冒泡排序的完整代码。


def bubbleSort(arr):
	# 获取数组长度
	arr_len = len(arr)
 # 外部大循环=》第几趟
	for i in range(1, arr_len):
		# 内部循环比较=》相邻数值进行比较
		for j in range(0, arr_len - i):# 每次内循环的次数都需要总长度减去已排好位置的值的数量
			if arr[j] > arr[j+1]: # 左右比较
				arr[j], arr[j+1] = arr[j+1], arr[j] # 将数值大的放右边,数值小的放左边


arr = [64, 34, 25, 12, 22, 11, 90]
bubbleSort(arr)
print('排序后:')
for i in range(len(arr)):
	print('%d'%arr[i], end=' ')

总结

本文介绍了 Python 实现冒泡排序算法的完整过程。如需了解更多相关内容,欢迎查阅本站其他文章或继续浏览后续内容,感谢支持!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表