美文网首页
插入排序(python实现)

插入排序(python实现)

作者: 远行_2a22 | 来源:发表于2020-02-04 15:07 被阅读0次

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

插入排序步骤

  • 将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。

  • 从头到尾依次扫描未排序序列,将未排序的每个元素插入有序序列的适当位置。

  • 如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。

  • 插入时,插入位置之后的所有数往后移动一位,然后将待插入的元素插入到该位置。

# -*- 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.时间复杂度:

  • 平均时间复杂度:O(n^2)
  • 最大时间复杂度:O(n^2)
  • 最小时间复杂度:O(n)
  1. 空间复杂度:O(1)
  2. 稳定性:稳定

相关文章

  • 排序算法详细代码实现

    算法分类 算法时间复杂度 选择排序 插入排序 C++实现 Python实现 冒泡排序 Python实现 归并排序 ...

  • python实现插入排序(InsertSort)

    python实现【插入排序】 算法原理及介绍 插入排序(Insertion-Sort)的算法描述是一种简单直观的排...

  • java快速学习排序---插入排序

    1.java实现插入排序 (1)、图解插入排序 (2)、插入排序的思想 (3)、插入排序的代码实现

  • 插入排序python实现

    插入排序算法介绍 摘自维基百科: 插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作...

  • 插入排序(python实现)

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

  • Python 实现插入排序

    插入排序适合于部分有序序列和小规模的数据。其平均时间复杂度为 O(N^2),空间复杂度为 O(1),并且为稳定排序...

  • python 排序算法

    文章概述 介绍各大常用经典的排序算法和效率,以及python实现常用算法(冒泡排序,选择排序,快速排序,插入排序)...

  • 插入排序的Python实现

    插入排序分析 输入: 长度为length的无序列表返回值: 按照升序排好序的数组插入排序的基本原理,是从第2项开始...

  • python实现插入排序算法

    插入排序,其原理是通过构建一个初始的有序序列,然后从无需序列中抽取元素,插入到有序序列的相对排序位置,就像将一堆编...

  • python实现插入排序算法

    插入排序,其原理是通过构建一个初始的有序序列,然后从无需序列中抽取元素,插入到有序序列的相对排序位置,就像将一堆编...

网友评论

      本文标题:插入排序(python实现)

      本文链接:https://www.haomeiwen.com/subject/pbprxhtx.html