冒泡排序算法详解
概述
冒泡排序是一种简单易懂的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换位置。走访数列的操作会执行多次,每一轮只会将一个最大或最小的元素放到序列的适当位置,直到完成整个序列的排序为止。
这种排序方式名字的由来是因为排序时,每次选择一个最大或最小的元素,并像气泡一样升到序列的顶部。
过程描述
以下为一次冒泡排序的具体过程:
- 依次比较相邻的元素,如果顺序不对则交换它们的位置,将大的元素冒泡到序列的最后面。
- 对剩下的元素重复以上操作,直至完成排序。
经过上述操作后,整个序列就被排好序了。
以下为冒泡排序的实现代码:
def bubble_sort(array):
n = len(array)
for i in range(n):
for j in range(0, n - i - 1):
if array[j] > array[j + 1]:
array[j], array[j + 1] = array[j + 1], array[j]
示例说明
在下面的示例中,我们来演示冒泡排序对一个无序列表进行排序的过程。
给定一个无序列表 [5, 2, 9, 1, 5, 6]
,运用冒泡排序算法的过程如下:
第一轮过程:
[2, 5, 9, 1, 5, 6]
,将 2 和 5 互换位置。[2, 5, 1, 9, 5, 6]
,将 9 和 1 互换位置。[2, 5, 1, 5, 9, 6]
,将 9 和 5 互换位置。[2, 5, 1, 5, 6, 9]
,将 9 和 6 互换位置。
经过第一轮的排序后,最大的元素 9 已经排到了序列的最后。
第二轮过程:
[2, 5, 1, 5, 6, 9]
,将 2 和 5 互换位置。[2, 1, 5, 5, 6, 9]
,将 5 和 1 互换位置。
经过第二轮的排序后,列表中的元素已经被正确地排序为 [1, 2, 5, 5, 6, 9]
。
作用与使用方法
冒泡排序算法的时间复杂度为 $O(N^2)$,因此对于大规模的数据排序来说效率并不高,但是对于小规模的数据排序则十分适用。
在实际编程中,冒泡排序算法常常被用于排序简单类型或是写demo的时候使用。另外,冒泡排序算法的思想也常常被用于其他排序算法的优化中。