数据结构与算法:插入排序

前言

快被数据结构与算法碾成渣渣了,决定开始补补

参考资料:算法导论(有MIT公开课-算法导论) 、Data Structures and Algorithms in Python、数据结构与算法

 

插入排序(insertion-sort)

插入排序的基本思想每次将一个带排序的记录,按其关键字大小插入到前面已经排好序的子表中的适当位置,直到

全部记录插完为止。

eg.对8个字母使用插入排序进行排序,每一行中对应的是外层迭代循环,每一行中的各个副本对应的是内层迭代循环,

当前被插入数组中的元素以高亮形式显示。

数据结构与算法:插入排序_第1张图片

代码实现(python)

1 def insertion_sort(A):
2     for k in range(1,len(A)):
3         cur=A[k]    # current element to be inserted
4         j=k         # find correct index j for currect
5         while j>0 and A[j-1]>cur:
6             A[j]=A[j-1]
7             j-=1
8         A[j]=cur    #cur is now in the rigth place

插入排序的算法分析:

该算法的运行时间是执行每条语句的运行时间之和。

最坏情况分析:数组反向排序,即按递减序排好序会导致最坏情况。运行时间为O(n2)

  数据结构与算法:插入排序_第2张图片

最好情况分析:数组正向排序,内层循环不执行,所以运行时间为O(n)

链接推荐:

麻省理工公开课《算法导论》学习笔记:http://www.cnblogs.com/diliwang/p/3352946.html

算法导论读书笔记:http://www.cnblogs.com/Anker/category/436374.html

 

.........

注:转载请注明出处

你可能感兴趣的:(数据结构与算法:插入排序)