栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【千锤百炼Python—6】:十大排序算法之简单插入排序

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【千锤百炼Python—6】:十大排序算法之简单插入排序

**

【千锤百炼Python—1】:十大排序算法总结(动画+代码)

**

简单插入排序是排序算法系列的第五个要介绍的算法!

简单插入排序既属于比较类排序也属于内部排序。

一、算法原理 1. 算法原理

插入排序(Insertion Sort)是一种简单直观的排序算法,属于插入排序的一种。

插入排序的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

2. 算法步骤
  • 步骤一:从序列的第一个元素开始,将该元素视为已被排序的序列(目前该序列中仅包含一个元素);
  • 步骤二:从未排序序列中取出下一个元素,在已排序序列的元素中从后向前扫描;
  • 步骤三:若待排序元素小于已排序序列中正在比较的元素,则将待排序元素继续前移;
  • 步骤四:重复步骤三,直至从已排序元素中找到<=新元素的位置,并将新元素置于其后;
  • 步骤五:重复上述步骤,直至所有元素排序完毕。
二、动图演示

三、程序实现
def insertionSort(arr):
    for i in range(len(arr)):
        preIndex = i-1
        current = arr[i]
        while preIndex >= 0 and arr[preIndex] > current:
            arr[preIndex+1] = arr[preIndex]
            preIndex-=1
        arr[preIndex+1] = current
    return arr

if __name__ == '__main__':
    arr = [3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48]
    sort = insertionSort(arr)
    print(sort)

输出结果为:

[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/659308.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号