算法理论 - liuzhen153/play-algorithm-python GitHub Wiki
什么是算法
算法就是计算或解决问题的步骤,有以下特点:
- 输入项:有一个或多个输入(无输入时,算法本身定义了初始条件)
- 确切性:每一步都有明确定义
- 可行性:每一步都可以在有限时间内完成
- 有穷性:在有限步后终止
- 输出项:有一个或多个输出,没有输出的算法是毫无意义的
这就类比做菜,我们需要遵循食谱的步骤才能做出特定的料理。食材配料是输入,食谱里的翻炒加料是【步】,炒熟后即终止,最终可以吃的菜就是输出。
算法和程序的区别
算法是以人类能够理解的方式来描述的,不可以直接在计算机上运行;程序是以计算机能够解释的编程语言编写而成的,可以在计算机上运行。
算法需要用程序来表达给计算机。
运行时间的计算和表示
求得运行时间最直接的方法就是在计算机上运行一下程序,记录下其花费的时间。但是,就算是同样的算法,由于编程语言和计算机的不同,花费的时间也会产生偏差。
如何计算
我们使用『步骤』来描述运行时间,『1步』就是基本单位。这样我们就可以用『计算从开始到结束总共执行了多少步』来计算算法的运行时间。
如何表示
如果某算法的步数为n,则运行时间的表示方法为:
O(n)
举例,把大象装进冰箱里:①打开冰箱门 ②将大象推进去 ③关上冰箱门
在这个例子里,我们的算法运行需要3步,则该算法的运行时间为:
O(3)
如何选择算法
计算机只能高速执行一些基本命令如『做加法』或『在指定内存地址上保存数据』等,将一个复杂问题转化成基本命令的组合可以是多种多样的,从而解决某一个问题的算法不止一个。
在算法的选择上,我们的考量标准也会各有不同:
- 对于内存小的计算机,更偏向于在运行过程中不需要耗费太多空间资源的简单算法
- 一般来说,不考虑机器性能,我们最为重视的是算法的运行时间