📜  插入排序 (1)

📅  最后修改于: 2023-12-03 14:54:44.728000             🧑  作者: Mango

插入排序介绍

插入排序(Insertion Sort)是一种简单直观的排序算法,其思想是将一个数插入到已排好序的有序数列中,初始时有序数列为空,然后每次将一个待排序的数插入到有序数列的恰当位置使之依然有序,直到所有待排序数都插入完成为止。

插入排序的时间复杂度为O(n^2), 空间复杂度为O(1),是一种稳定的排序算法。

插入排序实现

插入排序的实现可以通过以下伪代码表示:

for i = 1 to n-1
    key = a[i]
    j = i-1
    while j >= 0 and a[j] > key
        a[j+1] = a[j]
        j = j-1
    a[j+1] = key

代码解释:

  • for 循环遍历待排序序列的第2个数到最后一个数
  • key 存储当前待排序的数
  • j 指向有序序列的最后一个元素
  • while 循环比较 keyj 指向的元素,如果 keyj 指向的元素要小,则将 j 指向的元素后移一位,继续比较下一个元素,直到 key 大于等于 j 指向的元素,或者 j=-1,即 key 需要插入到有序序列的最前面
  • 插入 keyj+1 的位置
Python实现

以下是Python语言实现的插入排序代码:

def insertion_sort(arr):
    for i in range(1, len(arr)):
        key = arr[i]
        j = i - 1
        while j >= 0 and arr[j] > key:
            arr[j+1] = arr[j]
            j -= 1
        arr[j+1] = key
    return arr
总结

插入排序是一种简单直观的排序算法,虽然时间复杂度为O(n^2),但对于小规模的数据和部分有序的数据进行排序时具有较好的性能表现。