📜  插入排序(1)

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

插入排序

插入排序(Insertion Sort)是一种简单直观的排序算法,其基本原理是将一系列未排序的元素依次插入到已排序的序列中。它的时间复杂度为O(n^2),但是对于小规模的数据排序非常高效。

原理

插入排序的过程就像打扑克牌一样,每次将手中的牌(未排序的元素)插入到已经排好序的牌堆中。具体地,它依次将每个元素插入到已经排好序的子序列中,直到所有的元素都被插入到已排序的序列中为止。

算法流程
  1. 将第一个元素视为已经排序的序列,将后面的元素依次插入到已排序的序列中。
  2. 对于未排序的元素,从后向前扫描已排序的序列。
  3. 如果已排序的元素大于当前元素,那么将该元素后移一位。
  4. 如果已排序的元素小于当前元素,那么将该元素插入到该位置。
  5. 重复以上步骤,直到所有的元素都被插入到已排序的序列中。
代码实现

以下是插入排序的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

arr = [3, 2, 1, 4, 5]
insertion_sort(arr)
print(arr)

以上代码实现了插入排序的算法流程。它的时间复杂度为O(n^2),对于小规模的数据比快速排序和归并排序等算法更加高效。但是对于大规模的数据,它的时间复杂度会变得非常高,不适合实际应用。