详解冒泡排序算法原理与使用方法

冒泡排序算法详解

作用与使用方法

冒泡排序算法是一种简单的排序算法,它通过比较相邻的两个元素,依次交换位置,使得每轮循环最大的元素被排在最后面。其作用是将一组无序的数据变成有序的数据。冒泡排序算法适用于小数据量的排序,时间复杂度为O(n^2),因此对于大数据量的排序不太适合。

冒泡排序算法的使用方法很简单,只需要将待排序的数据放入一个数组中,然后调用排序函数即可。下面是一个示例代码:

def bubble_sort(data):
    n = len(data)
    for i in range(n - 1):
        for j in range(n - i - 1):
            if data[j] > data[j + 1]:
                data[j], data[j + 1] = data[j + 1], data[j]
    return data

过程分析

以数组 [4, 5, 1, 3, 2] 为例,讲解冒泡排序的排序过程。

第一轮循环:

  1. 比较第1个元素4和第2个元素5的大小,不需要交换位置,数组变为 [4, 5, 1, 3, 2]。
  2. 比较第2个元素5和第3个元素1的大小,需要交换位置,数组变为 [4, 1, 5, 3, 2]。
  3. 比较第3个元素5和第4个元素3的大小,需要交换位置,数组变为 [4, 1, 3, 5, 2]。
  4. 比较第4个元素5和第5个元素2的大小,需要交换位置,数组变为 [4, 1, 3, 2, 5]。

第一轮循环结束,最大元素5被排在了数组的最后面。

第二轮循环:

  1. 比较第1个元素4和第2个元素1的大小,需要交换位置,数组变为 [1, 4, 3, 2, 5]。
  2. 比较第2个元素4和第3个元素3的大小,需要交换位置,数组变为 [1, 3, 4, 2, 5]。
  3. 比较第3个元素4和第4个元素2的大小,需要交换位置,数组变为 [1, 3, 2, 4, 5]。

第二轮循环结束,第二大元素4被排在了数组的倒数第二个位置。

第三轮循环:

  1. 比较第1个元素1和第2个元素3的大小,不需要交换位置,数组变为 [1, 3, 2, 4, 5]。
  2. 比较第2个元素3和第3个元素2的大小,需要交换位置,数组变为 [1, 2, 3, 4, 5]。

第三轮循环结束,第三大元素3被排在了数组的倒数第三个位置。

第四轮循环:

  1. 比较第1个元素1和第2个元素2的大小,不需要交换位置,数组变为 [1, 2, 3, 4, 5]。

第四轮循环结束,第四大的元素也被排在了应该的位置。

最后,数组 [4, 5, 1, 3, 2] 经过冒泡排序之后,变成了 [1, 2, 3, 4, 5]。

示例说明

以下是对两个示例的说明:

示例1

对数组 [1, 5, 3, 7, 2] 进行冒泡排序:

data = [1, 5, 3, 7, 2]
sorted_data = bubble_sort(data)
print(sorted_data)  # [1, 2, 3, 5, 7]

期望输出:[1, 2, 3, 5, 7]

示例2

对数组 [9, 8, 7, 6, 5, 4, 3, 2, 1] 进行冒泡排序:

data = [9, 8, 7, 6, 5, 4, 3, 2, 1]
sorted_data = bubble_sort(data)
print(sorted_data)  # [1, 2, 3, 4, 5, 6, 7, 8, 9]

期望输出:[1, 2, 3, 4, 5, 6, 7, 8, 9]