编程(内涵):指令的集合,指令要准确,不能含有歧义。(code to learn比learn to code好,在编程中学习)
数据结构:带有结构特性的数据元素集合,(数据的组成和操作)
算法(algorithm)
概念:解决问题的方法。 例:1-100累加法和高斯方法的差别。
五大特征:
1. 有穷性 (Finiteness) :算法必须能在执行有限个步骤之后终止;
2.确切性(Definiteness):算法的每一步骤必须有确切的定义,无歧义;
3.0个或多个输入(Input):描述运算对象的初始情况,0个输入是指算发已经限定了初始条件;
4.一个或多个输出(Output):加工数据就是期望得到结果,没有输出的算法是毫无意义的;
5.可行性(Effectiveness):算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步骤,即每个计算机步骤都可以在有限时间内完成。
三种描述
1.流程图(五框一线)
2.N-S流程图(盒图)
3.伪代码(更符合代码编写的思路)
算法的时空复杂度
描述:
1.程序运行时间=所有语句运行时间之和;
2. 数据规模不一样、CPU运行效率也不一样;
3.用核心语句的执行次数来近似估计,核心语句要执行的次数与算法、输入的数据规模有关;
推导示例:
(图片来自转载)