📜  算法|插入排序|问题4(1)

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

插入排序

插入排序(Insertion Sort)是一种简单直观的排序算法。它的基本思想是,将待排序的元素分成已排序和未排序两个部分,每次从未排序部分取出一个元素,插入到已排序部分的合适位置,直至未排序部分为空。

算法步骤

插入排序的算法步骤如下:

  1. 从第一个元素开始,该元素可以认为已经被排序。
  2. 取出下一个元素,在已经排序的元素序列中从后向前扫描。
  3. 如果该元素(已排序)大于新元素,将该元素移到下一位置。
  4. 重复步骤 3,直到找到已排序的元素小于或等于新元素的位置。
  5. 将新元素插入到该位置后。
  6. 重复步骤 2~5,直至排序完成。
代码实现

以下是使用 Python 实现插入排序的示例代码:

def insert_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

其中,insert_sort() 函数接受一个待排序的列表作为参数,返回排序后的列表。

时间复杂度

插入排序的时间复杂度是 $O(n^2)$,其中 $n$ 是待排序元素的个数。虽然插入排序的时间复杂度比一些高级排序算法要高,但实际应用中插入排序仍然很常用,因为插入排序在处理小规模数据时具有优势,并且实现起来非常简单。