📜  DAA-插入方法(1)

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

DAA-插入方法

简介

插入排序是一种简单的排序算法,它通过将未排序的元素一个个插入到已排序部分中,逐步构建有序序列。它适用于小型数据集或基本有序的数据集。

算法思想

插入排序的基本思想是将未排序的元素一个个插入到已排序部分的正确位置上。具体过程如下:

  1. 从第二个元素开始,将其与已排序部分的元素依次比较,找到正确的插入位置。
  2. 将元素插入到正确的位置,并将已排序部分中的其他元素后移。
  3. 重复上述步骤,直到所有元素都被插入到正确的位置。
算法实现

以下是插入排序的示例代码(使用Python编写):

def insertion_sort(arr):
    n = len(arr)
    for i in range(1, n):
        key = arr[i]
        j = i - 1
        # 将比key大的元素后移
        while j >= 0 and arr[j] > key:
            arr[j + 1] = arr[j]
            j -= 1
        # 插入key到正确位置
        arr[j + 1] = key

# 示例
array = [5, 2, 8, 12, 7]
insertion_sort(array)
print(array)  # 输出 [2, 5, 7, 8, 12]
算法分析

插入排序的时间复杂度为O(n^2),其中n是待排序元素的数量。当数据集基本有序时,插入排序的性能非常好,时间复杂度接近O(n)。但在最坏情况下,即待排序的数据逆序时,时间复杂度为O(n^2)。

插入排序是一种稳定的排序算法,不会改变相同元素之间的相对顺序。它是一种原地排序算法,不需要额外的存储空间。

总结

插入排序是一种简单但有效的排序算法,适用于小型或基本有序的数据集。它的实现简单,算法思想清晰,代码量不多。尽管在大型数据集上的性能不如其他高级排序算法,但是在某些特定场景下,插入排序可能是一种不错的选择。