什么是算法?算法的5个特性

算法(algorithm)是解决特定问题的步骤描述,通俗地讲,算法就是描述解决问题步骤的方法。

例如,新学期开学,从家到学校的交通方式这个问题就有很多解决方案:

有的学生乘坐火车,有的学生乘坐汽车,有的学生乘坐飞机,在本市的可能会自己开车或乘坐公共汽车,离学校近的可能会步行来学校。

这里每一种方案就是一种算法,这么多解决方法就是这么多种算法。

在计算机中,算法也是对某一个问题的求解方法,只是它的表现形式是计算机指令的有序序列,执行这些指令就能解决特定的问题。例如,在高级程序设计语言(如C语言)中,常用的排序算法如选择排序、冒泡排序等,都是用计算机指令编写算法,来解决排序问题。

在程序设计中,算法有3种较为常用的表示方法:伪代码法、N-S结构化流程图和流程图法,用得最多的是流程图法,接下来就简单地学习算法的流程图法。

流程图是描述问题处理步骤的一种常用图形工具,它由一些图框和流程线组成。使用流程图描述问题的处理步骤,形象观,便于阅读。

画流程图时必须按照功能选用相应的流程图符号,常用的流程图符号如图所示。

编辑

添加图片注释,不超过 140 字(可选)

图所示的流程图符号中列举了4个图框、1个流程线和1个连接点,具体说明如下:

  • ·起止框用于表示流程的开始或结束。

  • ·输入输出框用平行四边形表示,在平行四边形内可以写明输入或输出的内容。

  • ·判断框用菱形表示,它的作用是对条件进行判断,根据条件是否成立来决定如何执行后续的操作。

  • ·处理框用矩形表示,它代表程序中的处理功能,如算术运算和赋值等。

  • ·流程线用单向箭线或直线表示,可以连接不同位置的图框。流程线的标准流向是从左到右和从上到下,可用直线表示,非标准流向的流程线应使用箭头指示方向。

  • ·连接点用圆形表示,用于流程图的延续。通过上面的讲解,读者对流程图符号有了简单的认识。下面以一个数组选择排序算法

的流程图为例,学习简单的流程图,如图所示。

编辑

添加图片注释,不超过 140 字(可选)

假设一个数组要从小到大排序,结合流程图来分析选择排序的过程:

  • 第一步,在数组中选择出最小的元素,将它与0角标元素交换,即放在开头第1位。

  • 第二步,除0角标元素外,在剩下的待排序元素中选择出最小的元素,将它与1角标元素交换,即放在第2位。

  • 第三步,依次类推,直到完成最后两个元素的排序交换,就完成了升序排列。这样根据流程图来编写算法的指令代码,就会变得清晰简单。读者在以后设计算法时,最好先根据设计思路出算法的流程图,其次分析其可行性,最后再完成代码。

算法的特性 一个好的算法,尤其是一个成熟的算法,应该具有以下5个特性: (1)确定性。算法的每一步都有确定的含义,不会出现二义性。即在相同条件下,只有一条执行路径,相同的输入只会产生相同的输出结果。 (2)可行性。算法的每一步都是可执行的,通过执行有限次操作来完成其功能。 (3)有穷性。一个算法必须在执行有穷步骤之后结束,且每一步都可在有穷时间内完成。这里的有穷概念不是数学意义上的,而是指在实际应用当中可以接受的、合理的时间和步骤。 (4)高效率与低存储。算法的效率通常指的是算法的执行时间,对于同一个问题的多种算法,执行时间短的其效率就高。存储量指的是算法在执行过程中所需的最大存储空间,包括所用到的内存及外存。设计算法时应考虑到执行效率和存储需求,设计出一个“性价比”较高的算法。 要设计出一个好的算法,就要综合考虑其正确性、可读性、健壮性,还要考虑其执行效率和存储量需求。

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
评论

打赏作者

Blue92120

您的鼓励是我最大的动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值