概述
#
什么是计算机科学 ?首先明确的一点就是计算机科学不仅仅是对计算机的研究,虽然计算机在科学发展的过程中发挥了重大的作用,但是它只是一个工具,一个没有灵魂的工具而已。所谓的计算机科学实际上是对问题、解决问题以及解决问题的过程中产生产生的解决方案的研究。例如给定一个问题,计算机科学家的目标是开发一个算法来处理该问题,最终得到该问题的解、或者最优解。所以说计算机科学也可以被认为是对算法的研究。因此我们也可以感受到,所谓的算法就是对问题进行处理且求解的一种实现思路或者思想。
#
如何形象化的理解算法一个常胜将军在作战之前都会进行战略的制定,目的是为了能够在最短的时间切成本消耗最低的情况下获取最终的胜利。如果将编码作为战场,则程序员就是这场战役的指挥官,你如何可以将你的程序可以在最短且消耗资源最小的情况下获取最终的执行结果呢?算法就是我们的策略!
#
意义数据结构和算法思想的通用性异常的强大,在任何语言中都被使用,它们将会是我们编码生涯中伴随我们最长久利器(左膀右臂)。有一定经验的程序员最终拼的就是算法和数据结构。
数据结构和算法思想也可以帮助我们拓展和历练编码的思维,可以让我们更好的融入到编程世界的角角落落。
#
评判程序优劣的方法- 消耗计算机资源和执行效率(无法直观)
- 计算算法执行的耗时(不推荐,因为会受机器和执行环境的影响)
- 时间复杂度(推荐)
#
时间复杂度- 评判规则:量化算法执行的操作/执行步骤的数量
- 最重要的项:时间复杂度表达式中最有意义的项
- 使用大O记法来表示时间复杂度
- O(最重要的项)
- 常见的时间复杂度:
- O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)
#
数据结构和算法数据结构是对数据(基本类型的数据)的组织形式,是算法需要处理问题的载体,解决的就是一组数据如何进行保存,保存形式是怎么样的
算法是解决问题的思想或者思路,是为了解决实际问题而设计的,使用不同的形式组织数据,在基于查询时的时间复杂度是不一样的。
算法一定要作用于数据结构当中,两者是相辅相成的