十大排序算法(三)--- 插入排序(选择排序算法流程图讲解)

十大排序算法(三)--- 插入排序

插入排序的思想是将当前的元素插入到一个已经排序好的有序数组中的适当位置,从而保证插入后数组依然有序。插入排序的最坏的时间复杂度是O(n^2), 最好的情况是O(n),具体时间复杂度度取决于原始待排序数组的有序程度,如果待排序数组完全逆序则时间复杂度就是O(n^2), 如果待排序数组完全有序,那么时间复杂度就是O(n)。

假设我们要对数组A[1,2,0,2,3,7,5]进行排序,下面通过图例展示排序的过程:

由排序过程可以看出,插入排序需要两层循环,上图中未缩进的展示行为外层循环,缩进的展示行为内层循环。整个排序过程比较简单。下面是python的代码实现,有兴趣的读者也可以尝试其它语言实现一下。

A = [1,2,0,2,3,7,5]

def insertion_sorting(data):

num = len(data)

for i in range(1, num):

markIndex = i

for j in range(i-1, -1, -1):

if data[markIndex] < data[j]:

data[markIndex], data[j] = data[j], data[markIndex]

markIndex = j

else: break

return data

def main():

#Ascending

print(insertion_sorting(A))


if __name__=='__main__':

main()

将上面的代码保存到一个文本文件,后缀名修改为.py。可以用python解释器执行一下,会输出如下结果:

可以看到,排序正确。

相关文章

用Python实现十大经典排序算法-插入、选择、快速、冒泡、归并等

本文来用图文的方式详细讲解了Python十大经典排序算法 —— 插入排序、选择排序、快速排序、冒泡排序、归并排序、希尔排序、插入排序、桶排序、基数排序、计数排序算法,想要学习的你们,继续阅读下去吧,如...

Python 实现七大排序算法(python进行排序)

技术博客: https://github.com/yongxinz/tech-blog同时,也欢迎关注我的微信公众号 AlwaysBeta,更多精彩内容等你来。本文用 Python 实现了插入排序、希...

Python入门到脱坑经典案例—列表排序

列表排序是Python编程中的基础操作,掌握各种排序方法对数据处理至关重要。下面我将介绍Python中多种列表排序的实现方式。方法一:使用内置sorted()函数# 对数字列表排序 numbers =...

Python高级排序算法应用(python简单排序)

基础排序算法实快速排序(Quick Sort)算法原理: 采用分治策略,选取基准值(pivot)将数组分为两部分,递归排序子数组def quick_sort(arr): ""&...

插入排序、选择排序、冒泡排序小结(45)

小朋友们好,大朋友们好!我是猫妹,一名爱上Python编程的小学生。和猫妹学Python,一起趣味学编程。今日主题插入排序、选择排序、冒泡排序有什么区别?原理不同插入排序是将未排序的元素逐个插入到已排...