经典排序算法-插入排序

时间:2022-07-22
本文章向大家介绍经典排序算法-插入排序,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

插入排序

插入排序(Insertion Sort),一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法 。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动。

  • 时间复杂度O(N²)
  • 空间复杂度O(1)
  • 稳定排序

算法的原理

第1次排序,将位置0上的数与位置1上的数,进行比较,如果位置1上的数比位置0上的数小,就将位置0的数与位置1上的数据交换位置,第2次排序,第二个位置上的数加入排序,第2位置上的数与前一进行比较,如果比前一位小,再与前一位比较,直至前面的数据小于等于它时,进行下一轮比较,当低n-1次排序完成,没有新的数据加入排序,数组就变得有序了。

python实现

def insertion_sort(arr):
    for i in range(1, len(arr)):
        index = i
        data = arr[i]
        while index > 0 and arr[index - 1] > data:
            # 移动基础 列表,确定要插入的位置
            arr[index] = arr[index - 1]
            index -= 1
        arr[index] = data
    return arr

if __name__ == "__main__":
    print(insertion_sort([45, 32, 8, 33, 12, 22, 19, 97]))

end