📅  最后修改于: 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
循环比较 key
和 j
指向的元素,如果 key
比 j
指向的元素要小,则将 j
指向的元素后移一位,继续比较下一个元素,直到 key
大于等于 j
指向的元素,或者 j=-1
,即 key
需要插入到有序序列的最前面key
到 j+1
的位置以下是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),但对于小规模的数据和部分有序的数据进行排序时具有较好的性能表现。