一、算法的要素包括:
1、数据对象的操作和操作:计算机可以执行的基本操作以指令的形式描述。
2、算法的控制结构:算法的功能结构不仅取决于所选的操作,还取决于操作之间的执行顺序。
二、算法的特征如下:
1、有穷性:算法的有穷性意味着算法在执行有限的步骤之后必须能够终止。
2、确切性:算法的每一步都必须确切定义。
3、输入项:一个算法有0个或多个输入来描述操作对象的初始条件。所谓的零输入是指由算法本身决定的初始条件。
4、输出项:一个算法有一个或多个输出来反映处理输入数据的结果。没有输出的算法毫无意义。
5、可行性:算法中执行的任何计算步骤都可以分解为基本的可执行操作步骤,即每个计算步骤都可以在有限的时间内完成。
算法可大致分为基本算法、数据结构的算法、数论与代数算法、计算几何的算法、图论的算法、动态规划以及数值分析、加密算法、排序算法、检索算法、随机化算法、并行算法,厄米变形模型,随机森林算法。
描述算法的方法有多种,常用的有自然语言、结构化流程图、伪代码和PAD图等,其中最普遍的是流程图。
随着计算机的发展,算法在计算机方面已有广泛的发展及应用,如用随机森林算法,来进行头部姿势的估计,用遗传算法来解决弹药装载问题,信息加密算法在网络传输中的应用,并行算法在数据挖掘中的应用等。
参考资料来源:百度百科-算法
要素
一,数据对象的运算和操作:计算机可以执行的基本操作是以指令的形式描述的。一个计算机系统能执行的所有指令的集合,成为该计算机系统的指令系统。一个计算机的基本运算和操作有如下四类:
1,算术运算:加减乘除等运算
2,逻辑运算:或、且、非等运算
3,关系运算:大于、小于、等于、不等于等运算
4,数据传输:输入、输出、赋值等运算
二,算法的控制结构:一个算法的功能结构不仅取决于所选用的操作,而且还与各操作之间的执行顺序有关
特征
一个算法应该具有以下五个重要的特征:
有穷性
(Finiteness)
算法的有穷性是指算法必须能在执行有限个步骤之后终止;
确切性
(Definiteness)
算法的每一步骤必须有确切的定义;
输入项
(Input)
一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;
输出项
(Output)
一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
算法的定义
通常,定义算法为"为解决某一特定任务而规定的一个指令序列"。
算法的5个基本特性
① 有输入。一个算法必须有0个或多个输入。它们是算法开始运算前给予算法的量。这些输入取自于特定的对象的集合。它们可以使用输入语句由外部提供,也可以使用赋值语句在算法内给定。
② 有输出。一个算法应有一个或多个输出,输出的量是算法计算的结果。
③ 确定性。算法的每一步都应确切地、无歧义地定义。对于每一种情况,需要执行的动作都应严格地、清晰地规定。
例1:
void fa( )
{
int x=5,y=10;
z=x+++y;//解释为:x+(++y)?(x++)+y?
printf("%d,%d,%d",x,y,z);
}
void fb( )
{
int x=5,y=10;
z=x+(++y); //x+++y解释为:x+(++y)
printf("%d,%d,%d",x,y,z);
}
void fc( )
{
int x=5,y=10;
z=(x++)+y; //x+++y解释为:(x++)+y
printf("%d,%d,%d",x,y,z);
}
④ 有穷性。一个算法无论在什么情况下都应在执行有穷步后结束。
⑤ 有效性。算法中每一条运算都必须是足够基本的。就是说,它们原则上都能精确地执行,甚至人们仅用笔和纸做有限次运算就能完成。
例3:
求和:S=1+2+3+…+∽ //不可以实现。
算法设计的要求
1)正确性
a.无语法错误;
b.对n组输入产生正确结果;
c.对特殊输入产生正确结果;
d.对所有输入产生正确结果。
2)可读性:“算法主要是为了人的阅读与交流”。
3)健壮性
4)高效与低存储量