[读书笔记]算法导论1.2

知识点

  1. 为什么研究算法:计算时间是一种有限的资源,存储器的空间也是一种有限的资源。使用算法就是为了能最有效的利用这些资源

  2. 算法的效率为什么比硬件和软件的效率更重要:
    计算机A 每秒执行效率为百亿级别的:10^10条指令/秒,算法执行效率为2n^2,当执行一千万的时候需要20000秒
    计算机B 每秒执行效率为千万级别的:10^7条指令/秒,算法执行效率为50nlgn,当执行一千万的时候需要1163秒
    从上面可以知道,就算一台计算机的执行效率为另一台机器的一千倍时候,但算法的效率有差距的时候,在执行运算次数很多的时候,两个之间的执行时间相差将很大。

  3. 算法在系统中的用处:我们应当像计算机硬件一样吧算法当成一种技术,整个系统的性能不但依赖于快速的硬件而且还依赖于选择有效的算法。当解决较大问题规模的时候,算法之间的差距会特别的明显。

重要的一句话

是否具有算法知识与技术的坚实基础是区分真正熟练的程序员和初学者的特征。

思考题

在思考题中,lgn = t ,算出来 n = 2^t 但是nlgn却怎么也计算不出来公式推导。这个题目放置等以后回来解

[读书笔记]算法导论1.1

知识点

  1. 算法的定义:任何良定义的计算过程;输入一个值或者值的集合,输入一个值或者值的结合,这个过程可以就叫做算法;算法可以用自然语言说明,也可以说明成计算机程序,甚至说明成硬件设计。唯一的要求是这个说明必须精确的描述所要遵循的计算过程。

  2. 算法有用的定义:对每个输入都是以正确的输出来停止;这个是正确的算法。当输出的错误率是可控的情况下,有时候这种算法也是有用的。

  3. 有趣算法特性:存在许多候选解,绝大多数候选解都没有解决手头的问题;存在时机应用。

  4. 数据结构:是一种存储和组织数据的方式,旨在便于访问和修改。没有一种单一的数据结构对所有用途都有效的。

  5. 效率:一般量度是速度。

  6. 并行性:随着计算机发展,多核计算机普及。为了从多核计算机获得最佳性能,设计算法时必须考虑并行性。