算法(algorithm)就是一个过程,是一种特殊的过程。它必须描述为一个有限步骤序列,且必须在有限时间内结束。每个步骤必须是良好定义的,达到人类可用一支笔和一张纸执行它的程度。
算法基于我们提供给它的输入做一些事情,并生成反映其所做工作的一些输出。算法1-1实现了我们前面描述的过程。
算法1-1 一个简单的股票跨度算法
SimpleStockSpan(quotes)→spans
输入: quotes,保存n个股票报价的数组
输出: spans,保存n个股票跨度的数组
spans←CreateArray(n) for i←0 to n do k←1 span_end ← FALSE while i-k ≥ 0 and not span_end do if quotes[i-k] ≤ quotes[i] then k←k+1 else span_end ← TRUE spans[i] ← k return spans
算法1-1展示了如何描述算法。我们并不使用某种计算机语言,因为那样会迫使我们处理与算法逻辑无关的实现细节,我们使用的是某种伪代码(pseudocode)形式。
伪代码是一种介于真正的程序代码和非形式化描述之间的形式。它使用一种结构化格式,并采用一组具有特定含义的词汇。但是,伪代码不是真正的计算机代码。它并不是为了被计算机执行,而是易于被人类理解。
顺便提一下,程序也应能被人类理解,但并非所有程序都是如此——有很多正在运行的计算机程序写得很糟糕,难以理解。<