📜  排序算法-插入排序(1)

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

插入排序

插入排序是一种简单直观的排序算法,其核心思想就是将一个待排序的序列分为两部分,在已经有序的部分中寻找到插入位置并插入。

插入排序的时间复杂度为$O(n^2)$,虽然不如快速排序、归并排序等高效排序算法,但是由于其代码简单易懂,对于小规模数据的排序,插入排序却拥有更高的实用价值。

算法步骤

插入排序的实现过程主要包含以下三个步骤:

  1. 将第一个元素认为是已排序序列,将后面的元素依次插入到已排序序列中;
  2. 将待插入的元素与已排序序列中的元素进行比较,找到合适的插入位置;
  3. 插入元素并将已排序序列的长度加一。
代码实现

插入排序有两种实现方式,分别是直接插入排序和二分插入排序。这里先介绍直接插入排序的实现过程。

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

在上述代码中,我们使用了类似于冒泡排序的交换操作,在内层循环中不断将相邻的元素交换位置,直到找到合适的插入位置,再将待插入元素插入到该位置。

总结

插入排序是一种简单直观的排序算法,由于其时间复杂度为$O(n^2)$,对于大规模数据的排序效率不高,但是对于小规模数据的排序却具备实用价值。在实现插入排序时,我们可以使用直接插入排序和二分插入排序两种方式。