|初学者指南:什么是算法?11行伪代码给你讲明白
导读:本文带你熟悉一个重要的术语——算法 。
作者:帕诺斯·卢里达斯(Panos Louridas)
来源:华章科技
【|初学者指南:什么是算法?11行伪代码给你讲明白】
本文插图
算法(algorithm)就是一个过程 , 是一种特殊的过程 。 它必须描述为一个有限步骤序列 , 且必须在有限时间内结束 。 每个步骤必须是良好定义的 , 达到人类可用一支笔和一张纸执行它的程度 。
算法基于我们提供给它的输入做一些事情 , 并生成反映其所做工作的一些输出 。 算法1-1实现了我们前面描述的过程 。
- 算法1-1 一个简单的股票跨度算法
- 输入: quotes,保存n个股票报价的数组
- 输出: spans,保存n个股票跨度的数组
伪代码是一种介于真正的程序代码和非形式化描述之间的形式 。 它使用一种结构化格式 , 并采用一组具有特定含义的词汇 。 但是 , 伪代码不是真正的计算机代码 。 它并不是为了被计算机执行 , 而是易于被人类理解 。
顺便提一下 , 程序也应能被人类理解 , 但并非所有程序都是如此——有很多正在运行的计算机程序写得很糟糕 , 难以理解 。
每个算法都有一个名字 , 接受一些输入 , 并生成一些输出 。 在本书中 , 算法的名字将采用骆驼拼写法(CamelCase) , 输入会写在括号中 , 输出用一个→指示 。 接下来的几行将会对算法的输入和输出进行描述 。 可以用算法的名字紧接放在括号中的输入来调用(call)算法 。
一旦算法编写好 , 就可以将其作为一个黑盒来处理 , 可以给它一些输入 , 黑盒则会返回算法的输出 。 当用一种程序设计语言实现一个算法时 , 它就是一个具名的计算机代码片段——函数(function) 。 在一个计算机程序中 , 我们调用实现算法的函数 。
某些算法不生成输出 , 当然也就不会显式返回结果 。 取而代之的是 , 它们的行为影响上下文的某部分 。 例如 , 我们可能提供给算法一个空间 , 供其写入结果 。 在此情况下 , 在传统意义上算法并非返回输出结果 , 但无论如何算法是有输出的 , 即它影响上下文发生的变化 。
某些程序设计语言会区分显式返回结果的具名程序代码片段——称为函数(function) , 以及不返回结果但可能有其他副作用的具名程序代码片段——称为过程(procedure) 。 这种差异来源于数学 , 数学上的函数是必须返回值的 。 对我们来说 , 当一个算法编码为实际程序时 , 既可以是一个函数也可以是一个过程 。
我们的伪代码中使用一些用粗体表示的关键字 , 如果你对计算机和程序设计语言的工作方式有所了解 , 这些关键字的含义就是不言自明的了 。
我们使用字符←表示赋值 , 用等号(=)表示相等比较 。 我们采用常用的五个符号(+ , - , / , × , ·)表示四种数学运算 , 后两个符号都表示乘法 , 这两个符号我们都会使用 , 基于美学考虑进行选择 。 我们将不会使用任何关键字或符号对伪代码分块 , 分块是通过缩进来表示的 。
在这个算法中 , 我们使用了数组(array) 。 数组是一种保存数据的结构 , 它允许我们按特定方式操纵其中的数据 。 我们保存数据并允许在其保存的数据上执行特定操作的结构称为数据结构(data structure) 。 因此数组是一种数据结构 。
推荐阅读
- 用户|什么叫数字化转型?
- 温枪|为什么测温枪一下子就能测出人体的温度?
- 广告位|商业化产品经理 | 在线广告(7): 设计一个广告位要考虑什么
- 互联网|同城跑腿配送生意好做吗?需要注意什么?
- 青年|34岁的人不想打工,在家做什么能一天收入300元?推荐一些
- 中年|Python编程语言有什么独特的优势呢?
- 科学|为什么没有人被暗物质杀死?
- 科学|既然所有的生命都要死亡,那么生命的意义是什么?
- 鲍跃忠新零售工作室|什么叫数字化转型?
- |又一巨头进军电竞!京东成立“京东电竞”,到底图什么?