插入排序(python实现)

2020-02-04  本文已影响0人  远行_2a22

插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

插入排序步骤

# -*- coding:utf-8 -*-

def insertion_sort(arr):
    '''
    插入排序
    '''
    # 索引为0的第一个元素,其为有序序列,无须再插入
    for i in range(1, len(arr)):
        pre_index = i-1  # 有序序列的最后一个元素的索引
        current = arr[i]  # 保存当前的数据
        # 待排元素小于有序序列的最后一个元素时,一直向前插入
        while pre_index >= 0 and arr[pre_index] > current:
            arr[pre_index+1] = arr[pre_index]  # 向前插入:即原数据往后退一位
            pre_index -= 1
        arr[pre_index+1] = current  # 将current数据插入最终的合适位置
    return arr


if __name__ == '__main__':
    array = [2, 4, 1, 3, 5, 8, 7, 8, 4, 1]
    print insertion_sort(array)

插入排序复杂度

1.时间复杂度:

  1. 空间复杂度:O(1)
  2. 稳定性:稳定
上一篇 下一篇

猜你喜欢

热点阅读