算法是一个抽象的解决问题的方法,需要具体的实现手段才能实现。计算机程序设计中,狭义的认为编程语言就是算法的实现手段。
编程语言:C,C++,C#,Basic,Java,Pascal等!
以下使用Java编程语言!面向对象编程(object Oriented Programming,OOP)
Java语言的集成开发环境包括:JDK,NetBeans,JBuiler,Eclipse.
程序结构:
顺序结构
分支结构:if...else, switch
循环结构:while, do...while, for
跳转结构:break,continue
1.算法的5个特性:有穷性,确切性,输入,输出,可行性。
2.算法的分类
(1)按照应用领域分类:基本算法,数据结构相关算法,数据结构相关算法,几何算法,图论算法,规划算法,数值分析算法,加密/解密算法,排序算法,查找算法,并行算法和数论算法等!
(2)按照算法结果的确定性分类:确定性算法:在有限的时间内完成,得到唯一的结果,且常取决于输入值。非确定性算法:在有限的时间内完成,结果往往不是唯一的,存在多值性。
(3)按照算法的思路分类:递推算法,递归算法,穷举算法,贪婪算法,分治算法,动态规划算法,迭代算法等!
3.算法基本概念:
(1)算法与公式的关系:公式是一种高度精简的计算方法,可以认为是一种算法;算法的形式可以比公式更复杂,解决的问题更广泛!
(2)算法与程序的关系:程序设计语言是算法实现的一种形式,也是一种工具。
(2)算法与数据结构的关系:数据结构是算法实现的基础!
(数据结构+算法+程序设计语言=程序)
4.算法的表示:自然语言表示,流程图表示,N-S图表示,伪代码表示。
流程图表示:
(1)流程图3种流程结构:
顺序结构, 分支结构, 循环结构.
(2)循环结构:当型循环:先判断条件再循环,while;直到型循环:先执行再判断,do...while、until
N-S图(盒图或CHAPIN)表示:
将整个程序写在一个大框图内,大框图由若干个小的基本框图构成。
伪代码表示:
介于自然语言和编程语言之间,并非真正的程序代码。伪代码并不能在计算机中运行,使用其的目的是将算法描述成一种类似于编程语言的形式,如C,C++,Java,Pascal等。
5.算法的性能:时间复杂度,空间复杂度。
时间复杂度:算法执行所需要花费的时间,越短越好。简短精悍的算法程序往往速度更快。还与问题的规模相关。
空间复杂度:算法程序在计算机执行所需要消耗的存储空间;
(1)程序保存所需要的存储空间,程序的大小;
(2)程序在执行过程中所需要消耗的存储空间资源,如程序在执行过程中的中间变量等!