Python实现冒泡排序算法的完整实例
本文详细解析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]。
- 比较 7 和 6,因 7 > 6,交换位置,数组变为 [6, 7, 5, 3, 9, 2, 8, 1, 4],此时小值在左,大值在右。
- 接着比较 7 和 5,因 7 > 5,交换位置,数组变为 [6, 5, 7, 3, 9, 2, 8, 1, 4]。
- 继续比较 7 和 3,因 7 > 3,交换位置,数组变为 [6, 5, 3, 7, 9, 2, 8, 1, 4]。
- 比较 7 和 9,因 7 < 9,无需交换,数组保持 [6, 5, 3, 7, 9, 2, 8, 1, 4]。
- 比较 9 和 2,因 9 > 2,交换位置,数组变为 [6, 5, 3, 7, 2, 9, 8, 1, 4]。
- 比较 9 和 8,因 9 > 8,交换位置,数组变为 [6, 5, 3, 7, 2, 8, 9, 1, 4]。
- 比较 9 和 1,因 9 > 1,交换位置,数组变为 [6, 5, 3, 7, 2, 8, 1, 9, 4]。
- 最后比较 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]。
- 比较 6 和 5,因 6 > 5,交换位置,数组变为 [5, 6, 3, 7, 2, 8, 1, 4, 9]。
- 比较 6 和 3,因 6 > 3,交换位置,数组变为 [5, 3, 6, 7, 2, 8, 1, 4, 9]。
- 比较 6 和 7,因 6 < 7,无需交换,数组保持 [5, 3, 6, 7, 2, 8, 1, 4, 9]。
- 比较 7 和 2,因 7 > 2,交换位置,数组变为 [5, 3, 6, 2, 7, 8, 1, 4, 9]。
- 比较 7 和 8,因 7 < 8,无需交换,数组保持 [5, 3, 6, 2, 7, 8, 1, 4, 9]。
- 比较 8 和 1,因 8 > 1,交换位置,数组变为 [5, 3, 6, 2, 7, 1, 8, 4, 9]。
- 比较 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 实现冒泡排序算法的完整过程。如需了解更多相关内容,欢迎查阅本站其他文章或继续浏览后续内容,感谢支持!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













