📜  交换排序python(1)

📅  最后修改于: 2023-12-03 15:06:23.434000             🧑  作者: Mango

交换排序 Python

交换排序(Bubble Sort)是一种简单直观的 sorting algorithm,它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就将它们交换过来。时间复杂度为 O(n^2)。

算法实现

下面是基于 Python 的交换排序算法实现,其实现核心是通过双重循环依次遍历数组,判断相邻元素的大小关系,如果存在逆序,则交换两个元素。

def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        # 元素交换标志
        swapped = False
        # 从后往前比较相邻的元素
        for j in range(n - 1, i, -1):
            if arr[j] < arr[j - 1]:
                # 交换元素
                arr[j], arr[j - 1] = arr[j - 1], arr[j]
                swapped = True
        # 没有进行元素交换,表示数组已经有序
        if not swapped:
            break
    return arr
算法分析
  • 最优时间复杂度:O(n),在输入数据已经有序的情况下。
  • 最坏时间复杂度:O(n^2),在输入数据是倒序的情况下。
  • 平均时间复杂度:O(n^2)。
  • 空间复杂度:O(1),原地排序,不需要额外的辅助空间。
  • 稳定性:稳定。
总结

交换排序虽然简单易懂,但其时间复杂度较高,效率较低,只适合于对小数据量的排序。对于大数据量的排序,更加推荐使用其他排序算法,如归并排序、快速排序等。