算法(algorithm)
算法是指令的集合,是为解决特定问题而规定的一系列操作。
它是明确定义的可计算过程,以一个数据集合作为输入,并产生一个数据集合作为输出。
一个算法通常由五个特性:
- 输入:一个算法应以待解决的问题的信息作为输入。
- 输出:输入对应指令集处理后得到的信息。
- 可行性:算法是可行的,即算法中的每一条指令都是可以实现的,均能在有限的时间内完成。
- 有穷性:算法执行的指令个数是有限的,每个指令又是在有限的时间内完成的,因此整个算法也是在有限时间内可以结束的。
- 确定性:算法对于待定的合法输入,其对应的输出是唯一的。即当算法从一个特定输入开始,多次执行同一指令集结果总是相同的。
算法是一个独立存在的一种解决问题的方法和思想。
对于算法而言,实现的语言并不重要,重要的是思想。
简单来说,算法就是计算机解题的过程。在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法。前者是算法的逻辑形式,后者是算法的代码形式。
举例:如何求1+2+…+100=?
算法1:一次相加(while do-while for)
算法2:高斯解法:首位相加*50 (1+100)*100/2 100+101/2
算法3:使用递归实现:sum(100)=sum(99)+100 sum(99)=sum(98)+99 … sum(2)=sum(1)+2 sum(1)=1
算法与数据结构的区别
数据结构只是静态的描述了数据元素之间的关系。
高效的程序需要在数据结构的基础上设计和选择算法。
程序 = 数据结构+算法
总之:算法是为了解决实际问题而设计和选择算法。
抽象数据类型(Abstract Data Type)
抽象数据类型(ADT)的含义是指一个数据模型以及定义在此数据模型上的一组操作。即把数据类型和数据类型上的运算困在一起进行封装。引入抽象数据类型的目的是把数据类型上的运算的实现与这些数据类型和运算在程序中的引用隔开,使它们相互独立。
常见的数据运算有五种:
- 插入
- 删除
- 修改
- 查找
- 排序