美文网首页
跟着课本走算法导论复习(1) 插入排序

跟着课本走算法导论复习(1) 插入排序

作者: 大侠一点红 | 来源:发表于2017-05-09 19:20 被阅读0次

 还有一个月就要算法导论考试了,东西很多,想了想就姑且把博客当作笔记。一边打字,一边看书,一边复习。

插入排序虽然在第一章有所提到,然而具体讲解的地方是在第二章。

插入排序(INSERTION-SORT)**时间复杂度:平均: O( n2)   最坏: O(n)  最好:O( n2)

空间复杂度:O(1)(因为不需要辅助数组存储数据)

插入排序思路(结果从小到大)(个人理解):

从第二个元素起,当前元素与前一个元素进行比较。如果比前一个元素小,就两个元素值相互交换,然后继续向前比较,直到该元素比前一个元素大为止。(有一点冒泡排序的感觉。。。)之后,第三个元素起,执行上述过程,随后,直到最后一个元素比较完成,排序结束。

伪代码:

INSERTION-SORT(A)

for j=2 to A.length

key=A[i]

i=j-1

while i>0

and

A[i]>key

A[i+1]=A[i]

i=i-1

A[i+1]=key

代码(主体代码)

for(int j=0;j<x;j++)

{

int key=a[j];

int k=j-1;

while(k>0&&a[k]>key)
{

a[k+1]=a[k];

k=k-1;

a[k+1]=key;

}

}

算法分析:

要计算插入排序的时间复杂度,就是通过得到每条语句的执行时间算总时间

平均情况:
最佳情况(输入数组已排好序,所以该算法是受输入序列影响的)

分析

其中,最坏情况可以用 an2+bn+c 表示,也就是n平方级

最好情况是线性的,也就是n级

平均情况,由于其中有求和,而且涉及到n,所以也是n平方级

因此各种情况的时间复杂度就出来了

相关文章

  • 跟着课本走算法导论复习(1) 插入排序

    还有一个月就要算法导论考试了,东西很多,想了想就姑且把博客当作笔记。一边打字,一边看书,一边复习。 插入排序虽然在...

  • 2018-08-08 算法导论(2.1 插入排序)

    算法导论学习101 首先,对于插入排序算法的大致描述为下输入为: < a1, a2, a3, ... , an >...

  • lecture 1

    算法导论Lesson1 课程简介: 内容主要包括: 算法的含义、意义的简要介绍; 算法的分析; 插入排序、合并排序...

  • 第1天-插入排序

    算法说明 插入排序是算法导论一书中第一个算法,在书中举了一个非常恰当的扑克牌例子来说明插入排序的算法原理:Inpu...

  • 算法导论复习

  • 算法导论-插入排序

    1.伪代码 算法流程图示 2.Python代码 result: 循环不变性: 初始化: 循环的第一次迭代之前,他为...

  • 插入排序【算法导论】

    注:学习算法导论,按照标准伪代码理解翻译为java实现,如有兴趣理解整个过程的细节,建议阅读《算法导论》第二章:2...

  • 讨厌算法的程序员 1 - 插入排序

    讨厌算法的程序员系列入口 什么是算法 在说插入排序之前,我们了解下《算法导论》对算法的从两种不同角度的定义。 一般...

  • 排序算法入门之「插入排序」

    插入排序 借用《算法导论》里的例子,就是我们打牌的时候,每新拿一张牌都会把它按顺序插入,这,其实就是插入排序。 齐...

  • 算法导论-算法基础-插入排序

    插入排序 输入:n个数的一个序列 。输出:输入序列的一个排列 ,满足a1'≤a2'≤…≤an'。 j表示正准备插入...

网友评论

      本文标题:跟着课本走算法导论复习(1) 插入排序

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