基础知识

1.良定义

well-defined,就是指某个表达式是完全符合ISO标准的,没有歧义的。与其相对应的就是ill-defined,非良好定义的。

https://bbs.csdn.net/topics/350207887

2.算法

算法就是任何良定义的计算过程,该过程取某个值或值的集合作为输入并产生某个值或值的集合作为输出。

理解:算法是一个计算过程,一个计算工具,获得输入,产生输出。

3.挑选算法的依赖因素

将被排序的项数

已被稍微排序的程度

关于项值的可能限制

计算机的体系结构

将使用的存储设备的种类

4.正确算法

若对于每个输出实例,算法都以正确的输出停机,则称该算法是正确的。

注:不正确的算法只要其错误率可控有时可能是有用的

5.数据结构

数据结构是一种存储和组织数据的方式,旨在便于访问和修改

6.算法届的难题 - NP完全

https://baike.baidu.com/item/NP%E5%AE%8C%E5%85%A8%E9%97%AE%E9%A2%98/4934286?fr=aladdin

7. 循环不变式

循环不变式的三个特性

       初始化为真(即数学归纳法中的证明基本情况)

       每次循环迭代为真(即数学归纳法中的证明归纳步)

       终止时可以证明算法正确性

8. ∑的意义

其中i表示下界,n表示上界, k从i开始取数,一直取到n,全部加起来。

https://baike.baidu.com/item/%CE%A3/7806170

9.分析算法

单处理器计算模型——随机访问机(RAM模型)

在RAM模型中,指令一条接一条执行,没有并发操作。

输入规模n —— 输入中的项数(有时用两个数而不是一个数来描述输入规模)

运行时间T(n) —— 执行的基本操作数或步数

第i步的执行时间c(i) —— 是一个常量

插入排序算法分析:

 

注:其中是一个依赖于已排序规模的函数,最好情况=1,最坏情况=j

计算运行时间:

 - 最好情况:

      

       我们将运行时间表示为an+b,a和b依赖于语句代价,因此最好情况是线性函数

 - 最坏情况:

      

       我们将运行时间表示为,a,b,c依赖于语句代价,因此最坏情况是二次函数

增长量级:

忽略语句代价,忽略低阶项,忽略最重要的项的系数,我们可以得到插入排序的增长量级:

最好情况:

最坏情况:

posted @ 2018-06-24 18:26  yc紫日  阅读(268)  评论(0编辑  收藏  举报