交换排序算法的实现方法及时间空间复杂度分析

11 min read

交换排序算法是一种经典的排序算法,其中最简单的形式是冒泡排序。它的基本思想是比较相邻的元素,如果顺序错误就交换位置。下面是一个实现冒泡排序的方法:

def bubble_sort(arr):
    n = len(arr)
    # 遍历所有数组元素
    for i in range(n):
        # 最后 i 个元素已经排好序
        for j in range(n-i-1):
            # 如果当前元素大于下一个元素,则交换它们的位置
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]

arr = [64, 34, 25, 12, 22, 11, 90]
bubble_sort(arr)
print("排序后的数组:")
for i in range(len(arr)):
    print("%d" % arr[i])

时间复杂度是$O(n^2)$,其中n是待排序数组的长度。在最坏情况下,每个元素都需要与其他元素比较,并且需要交换位置。因此,总共会有$n*(n-1)/2$次比较和交换,时间复杂度为$O(n^2)$。

空间复杂度是$O(1)$,即算法的内存使用不随输入数据规模增加而增加。这是因为算法只需要常数级别的额外存储空间来临时存储数组中的元素进行比较和交换。