1 算法简介

什么是算法?
为什么研究算法?
算法相对其他技术来说作用是什么?

1.1 算法

算法是任何well-defined的计算过程,该过程可以接收某个值或者值的集合作为输入然后产生某个值或值的集合作为输出。简单来讲,算法就是将输入转化为输出的序列。
作为中间步,排序算法可能是提到最多的算法之一,例如给定一个输入序列<31,21,58,47,7>,排序算法将返回序列<7,21,31,47,58>,输入序列是排序问题的一个实例。
如何判断算法的正确性?
若每个输入实例,算法可以输出正确的结果并结束,则算法是正确的。两个要素
输出正确结果
结束运行

1.2 为什么研究算法

好的算法可以减少计算时间,节省成本

1.3 算法相对其他技术来说作用是什么?

下面列举了其他先进的计算机技术
计算机体系机构与制造技术

  • 图形用户界面
  • 面向对象系统
  • 万维网技术
  • 有线与无线网络的快速组网
    这些技术大部分都需要借助算法实现。

练习

1.2-1 给出应用层需要算法内容的实例,并讨论算法功能的实现

高德地图导航,最短路径,最快路径,步行最少等

1.2-2 假设我们正比较插入与归并排序在相同机器上的实现。对规模为n的输入,插入排序运行8n^2步,而归并排序运行64nlgn步。问对哪些n值,插入排序优于归并?

8n^2 < 64nlgn
n值为 n >6.5

1.2-3 对于一个运行时间为100n*n的算法,要使其在同一台机器上,在比一个运行时间为2^n的算法运行的很快,n的最小值是多少?

100n*n < 2^n
n值为15

思考题

1-1(运行时间的比较) 假设求解问题的算法需要f(n)毫秒,对下表中的每个函数f(n)和时间t,确定可以在时间t内求解的问题的最大规模n。

思路,将s转化ms,然后计算lgn<1000

1秒 1分钟 1小时 1天 1月 1年 1实际
lgn 10^1000 10^60000 正无穷大 正无穷大 正无穷大 正无穷大 正无穷大
sqrt(n) 10^6 3.6E+9 4.7E+16 2.7E+19 2.43E+23 3.5E+25 3.5E +31
n 1000 60000 3600000 86400000 259000000 31104000000 31110400000000
nlgn 141 4896 204095 3.94E+6
n^2 32 245 1898 9296 50912 177584 1775838
n^3 11 40 113 443 638 4145 14598
2^n 10 16 22 27 32 35 42
n! 7 9 10 12 15 17 18

你可能感兴趣的:(1 算法简介)