关于算法,我们都应知道的

您所在的位置:网站首页 算法的特性是什么并说明每个特性的含义 关于算法,我们都应知道的

关于算法,我们都应知道的

2024-07-15 09:30| 来源: 网络整理| 查看: 265

定义:

算法是指对特定问题求解步骤的一种描述。

 

 

特性:

(1)有穷性:算法是由若干条指令组成的有穷序列,总是在执行若干次后结束,不可能永不停止。

(2)确定性:每条语句有确定的含义,无歧义。

(3)可行性:算法在当前环境条件下可以通过有限次运算实现。

(4)输入输出:有零个或多个输入,一个或多个输出。

 

 

“好”算法的标准如下:

(1)正确性:正确性是指算法能够满足具体问题的需求,程序运行正常,无语法错误,能够通过典型的软件测试,达到预期的需求。

(2)易读性:算法遵循标识符命名规则,简洁易懂,注释语句恰当适量,方便自己和他人阅读,便于后期调试和修改。

(3)健壮性:算法对非法数据及操作有较好的反应和处理。例如,在学生信息管理系统中登记学生年龄时,若将21岁误输入为210岁,系统应该提示出错。

 

(4)高效性:高效性是指算法运行效率高,即算法运行所消耗的时间短。算法时间复杂度就是算法运行需要的时间。现代计算机一秒钟能计算数亿次,因此不能用秒来具体计算算法消耗的时间,由于相同配置的计算机进行一次基本运算的时间是一定的,我们可以用算法基本运算的执行次数来衡量算法的效率。因此,将算法基本运算的执行次数作为时间复杂度的衡量标准。

(5)低存储性:低存储性是指算法所需要的存储空间低。对于像手机、平板电脑这样的嵌入式设备,算法如果占用空间过大,则无法运行。算法占用的空间大小称为空间复杂度。

 

 

算法的两大分类:

一个是数据结构(数据对象):数、矩阵、集合、串、排列、图、表达式、分布等。

另一个是算法策略:贪心、分治、动态规划、线性规划、搜索等。

 

这两条线索是相互独立的:同一个数据对象(比如图)上有不同的问题(如单源最短路径和多源最短路径),就可以用到不同的算法策略(例如贪婪和动态规划);而完全不同的数据对象上的问题(如排序和整数乘法),也许就会用到相同的算法策略(如分治)。

 

 

如何学习算法(个人想法):

(1)HACK精神:对这个事物拥有这极高的热情,对这个事物有一种快速掌握的渴望,对这个事物不断问为什么,亲自去做并在这个过程中明白当初问为什么的到底是个啥以及明白这个问题的答案是什么。

(2)数学与逻辑:在我的学习编程或是在学习算法的过程中,无数次的实践告所我——算法的灵魂是数学以及思维逻辑。例如,在编程1+2+3+ …… +n时,采用 "for(int i=1;i



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3