算法概念:
算法是解决特定问题的有限、明确、可执行的步骤集合,用于解决一个特定问题或完成一项特定任务,本质是把输入数据转化为期望输出的“解题流程”。
打个比喻来说明算法:
现在我们要做一个菜,由于每个厨师的操作步骤和做菜的方法都是不同的,因此做出来的菜的口味也不同,那么这个厨师的菜谱其实就是厨师做菜的“算法”。
我们要做一个“西红柿炒鸡蛋”这个菜,那么设计这个菜的“菜谱”其实就是我们设计的算法。
有限的材料:西红柿、鸡蛋、盐等等,应该不会加黄瓜,否则就是“黄瓜炒鸡蛋了”。
可执行的: 步骤必须是你能做到的,比如“搅拌”,而不是“用意念混合”。
明确的步骤:
1.先放油,倒入鸡蛋,然后加入西红柿,如果设计成先放西红柿后加鸡蛋,可能炒出来的菜会比价糟糕。
2.“加入3克盐”,而不是“加少许盐”,盐的数量不同,口味自然不同。
3.大火炒40秒可以结束
有限的时间: 菜谱必须在某个时刻结束,做出菜肴。
解决特定问题: 目标是做出“西红柿炒鸡蛋”。
在计算机科学中,算法是计算机程序的“灵魂”。程序是算法用某种编程语言(如Python, C++, Java)实现的具体代码,而算法是背后的思想和逻辑。
算法的五大基本特征
一个合格的算法必须满足以下五个条件:
输入: 算法有零个或多个输入。
炒鸡蛋算法中,西红柿、鸡蛋、盐。
有些算法可以没有输入,例如直接输出“Hello, World!”。
输出: 算法至少有一个输出。
炒鸡蛋算法的输出是一一盘西红柿炒鸡蛋。
在计算机中,输出可以是屏幕上的结果、一个文件、一个数据等。
有穷性: 算法必须在执行有限步之后结束。
不能无限循环下去。炒鸡蛋算法在规定时间后结束。
确定性: 算法的每一步都必须有确切的、无歧义的定义。
“大火炒40秒”是确定的;“大火炒一会儿”就是不确定的。
可行性: 算法的每一步都必须是可行的,也就是说,能够通过已经实现的基本操作在有限时间内完成。
“计算1+1”是可行的;“预测明天的彩票号码”在当前技术下是不可行的。
算法描述:自然语言描述、流程图描述、 伪代码描述
1、自然语言描述
定义:使用人类日常交流的语言(如中文、英文)来描述算法的步骤,最容易被非技术人员理解。
优点:易于理解,门槛极低,无需任何专业背景,任何人都能看懂,方便与非技术人员沟通。
缺点:描述复杂算法时会非常冗长,容易产生歧义。
适用场景:初步沟通算法思路、向非技术人员讲解核心逻辑。
示例(以 “计算 1 到 100 的和” 为例):
先准备一个用来存总和的变量,初始值设为 0。
再准备一个计数变量,初始值设为 1。
把计数变量的值加到总和变量里。
让计数变量加 1,然后检查它是否超过 100。
如果没超过,就回到第 3 步继续加;如果超过了,就结束,此时总和变量里的数就是结果。
2、流程图描述
定义:用一系列图形符号和箭头来表示算法流程的图,即:用标准化的图形符号(如矩形、菱形、箭头)表示算法的执行步骤、逻辑分支和控制流程,是一种“可视化”的算法描述方法。
优点:算法的整体结构、步骤流向和逻辑结构(顺序、判断、循环)一目了然,尤其是能清晰地展示条件判断和循环结构,能快速发现流程漏洞。
缺点:画起来相对麻烦,修改也不便,而且流程图不便于直接转化为代码。对于非常复杂的算法,画出来的流程图会非常繁琐,可能会变得庞大而混乱。
适用场景:梳理算法逻辑框架、汇报时展示核心流程、团队协作确认步骤。
核心符号说明:
矩形:表示一个具体的操作步骤(如 “变量赋值”“计算求和”)。
菱形:表示一个判断条件(如 “计数变量> 100?”),会产生 “是” 或 “否” 两个分支。
箭头:表示步骤之间的执行顺序。
椭圆形:表示算法的开始或结束。
例子:用流程图描述“求两个数中的最大数”算法

3、伪代码描述
定义:一种模仿编程语言结构和逻辑的、非正式的、易于理解的语言描述。它不依赖于任何具体的编程语言,但包含了编程语言的关键结构(如循环、判断)
解释说明:伪代码是介于自然语言和编程语言之间的描述方法。用类似编程语言的语法,但又不严格遵循某一种具体语言规则的 “半代码”,是连接自然语言和实际代码的桥梁。
优点:
结构清晰,兼顾严谨性和灵活性,既没有歧义,又能快速转化为 Python、Java 等实际代码。
避免了编程语言严格的语法细节(如分号、数据类型声明),让设计者更关注算法逻辑本身。
简洁精确,没有自然语言的歧义性,也比流程图书写更快。
缺点:需要一定的编程基础才能完全理解(如循环、判断语句),非技术人员理解门槛较高,没有统一的标准,不同人写的风格可能略有差异。
适用场景:技术人员之间交流算法细节、为编写实际代码做准备。
示例:用伪代码描述“求两个数中的最大数”算法
BEGIN
INPUT a
INPUT b
IF a > b THEN
PRINT a
ELSE
PRINT b
END IF
END

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



