三 算法的基本概念
本章节笔记概念性内容比较多,我会尽量用通俗易懂的描述和例子结合起来,希望大家能够理解😘

1.算法的定义
- 对特定问题求解方法和步骤的一种描述,它是指令的有限序列,每个指令表示一个或多个操作。
- 算法就是解决问题的方法和步骤
简单来说,算法就像是做一件事情的详细步骤说明书。
例如,你要做一份水果沙拉,你可能会有这样的步骤:
洗水果(这是一个指令,但也包含了洗苹果、洗香蕉等多个操作,
同时解释了上面那句话"每个指令可以表示一个或多个操作")
切水果
把切好的水果放入碗中
加入沙拉酱并搅拌均匀

2.算法的描述
算法可以用一下多种语言来进行描述
- 自然语言:英语、中文…
- 流程图:传统流程图、NS流程图…
- 伪代码:类语言-类C语言(例如前两章的抽象数据结构类型)
- 程序代码:C/C++、Java、Python…
3.算法的特性
-
有限性
有限步骤之内正常结束,不能形成无穷循环。(算法必须是有限的,而程序可以是无穷的)
有限性就是必须在有限步骤内正常结束,不能陷入无穷循环
比如:
你要数 1 到 100 的数字,
这是一个有明确终点(100)的任务,
你数完就结束了,这就是有限的。
如果让你一直数下去,没有尽头,
那就不符合算法的有限性。

-
确定性
算法中每条指令必须有确切的含义,对于相同的输入只能得出相同的输出。
确定性的意思就是每次输入相同的值必须返回一个固定的值,不得随意变化
比如:
用计算器计算 2 加 3,
无论你什么时候按 2 加 3 这个操作,结果都是 5,
不会出现有时是 5,有时是其他数字的情况。

-
可行性:
原则上能精确进行,操作可通过已实现的基本运算执行有限次而完成。可行性是指算法必须要有一个可行的步骤去完成对应操作
就像有些学生写编程题,要求你写一个算法并给出输出结果,结果学生不会做直接 printf 输出结果,你们说这是否符合可行性?
正如你所想,这是不符合可行性的,虽然输出结果一样,但并没有体现解决问题的步骤和方法,没有通过一系列有逻辑的基本运算来得到结果
再来一个生动的例子,
你要做一个蛋糕,食谱上的步骤都是可行的,
比如打鸡蛋、搅拌面粉等,通过这些基本操作的有限次执行,你最终可以完成做蛋糕这个任务。
如果食谱上有一个步骤是 “用魔法让蛋糕出现”,这就不符合可行性,因为没有办法执行这个操作。

4.算法与程序的关系
-
算法是解决问题的一种方法或一个过程,一个问题可以有多种算法
-
程序是算法的具体实现
程序=数据结构+算法
以整理玩具为例,
你决定用一排盒子(数据结构 - 数组)来放玩具,
然后用一种特定的方法(算法 - 比如按颜色分类)来整理玩具。
这个整理玩具的整个过程就是一个程序。

5.算法的设计要求
-
正确性:算法能够正确的解决实际问题。
假如你要设计一个算法来计算一个矩形的面积。
正确的算法应该是长乘以宽(面积 = 长 × 宽)。
如果按照这个算法进行计算,就能准确地得出矩形的面积,这就是算法的正确性。
-
可读性:算法应具有良好的可读性,以帮助人们理解。
假设你要向朋友解释如何烤蛋糕。
如果你把步骤写得很清楚,
比如 “第一步,将烤箱预热到 180 度;第二步,把鸡蛋打散……” 这样条理清晰的步骤,
你的朋友很容易就能理解,这就像算法的可读性。
如果步骤写得混乱,你的朋友就很难明白该怎么做。
-
健壮性:算法能对输入的非法数据做出反应或处理,而不会产生莫名其妙的输出。
假如你设计了一个计算器程序。
当用户输入正常的数字进行计算时,比如 “2 + 3”,程序能正常计算出结果是 5。
但是如果用户输入了一些不合理的内容,比如 “abc + def”,
健壮的算法应该能够识别出这是非法输入,并给出提示(自己定义的提示.不是系统的自动报错),而不是崩溃或给出错误的结果。
-
高效率性和低存储量:效率是指算法执行的时间,存储量需求是指算法执行过程中所需要的最大存储空间,这两者都与问题的规模有关。
假设你要在一个大仓库里找一件特定的物品。
一种方法是从仓库的第一个角落开始,一个一个地找(这可能会花费很长时间,效率低);
另一种方法是你有一个物品索引表,通过查看索引表可以快速定位到物品所在的位置(这种方法效率高)。
同时,如果这个索引表不需要占用很大的空间来存储,那就满足了低存储量的要求。
在算法设计中,类似地,要追求快速运算和较少的存储资源占用
地找(这可能会花费很长时间,效率低);
另一种方法是你有一个物品索引表,通过查看索引表可以快速定位到物品所在的位置(这种方法效率高)。
同时,如果这个索引表不需要占用很大的空间来存储,那就满足了低存储量的要求。
在算法设计中,类似地,要追求快速运算和较少的存储资源占用
我已经尽可能将枯燥的概念性知识转化为有趣的例子和图片,希望你们能够理解算法的基本概念,如果喜欢的话.麻烦点一个赞,谢谢😘
1万+

被折叠的 条评论
为什么被折叠?



