python 学习笔记 -- 数据结构与算法 插入排序 Insertion Sort

Posted jade-91

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了 python 学习笔记 -- 数据结构与算法 插入排序 Insertion Sort相关的知识,希望对你有一定的参考价值。

【插入排序】:每次保证列表最左端子序列是排好顺序的,然后取下一个元素,扫描其左端的子序列,将其中大于目标元素的元素右移一个位置,直到找到合适的位置将目标元素插入子序列中。逐步增大排序完成的sublist的长度,最终完成整个列表的排序

  算法思路如下:

    1. 列表最左边第一个元素认为已经排序好了

    2. 取下一个元素(目标元素),在它前面已经排序完成的子序列中从后向前扫描

    3. 如果子序列中被扫描的当前元素大于目标元素,则将当前元素右移一个位置

    4. 重复第3步,直到被扫描的元素小于或等于目标元素

    5. 将目标元素插入到步骤4中所述元素的右面

    6. 重复上述2-5的步骤,直到列表最后一个元素插入到适当的位置,整个列表排序完成。

 

【 示意图 】

  下图是完成插入排序的整个过程

  技术分享图片

  下图是灰色部分是已经排好顺序的子列表。现在要插入下一个目标元素31,从子列表最右端元素开始扫描:

  93>31,右移一个位置;77, 54 同理;26<31,把31插入26后面的位置。

  技术分享图片

 

【 implementation of insertion sort】

 

  技术分享图片

【 performance analysis 】

  最坏的情况下,列表降序排列,比较次数为O(n2);最好的情况下,列表正序排列,比较次数为O(n)



以上是关于 python 学习笔记 -- 数据结构与算法 插入排序 Insertion Sort的主要内容,如果未能解决你的问题,请参考以下文章

python 学习笔记 -- 数据结构与算法 快速排序 Quick Sort

python 学习笔记 -- 数据结构与算法 插入排序 Insertion Sort

python 学习笔记 -- 数据结构与算法 归并排序 Merge Sort

python 学习笔记 -- 数据结构与算法 选择排序 Selection Sort

Python数据结构学习笔记——搜索与排序算法

Python100天学习笔记Day17 数据结构与算法