什么是算法?

在本教程中,我们将借助示例了解什么是算法。

在计算机编程术语中,算法是一组定义明确的指令,用于解决特定问题。它需要一组输入并产生所需的输出。例如,

两个数相加的算法:

  1. 取两个数字输入。
  2. 使用 + 运算符对两个数字进行运算。
  3. 输出计算结果。

好算法的品质

  • 算法的输入和输出应该明确定义。
  • 算法中的每一步都应该清晰明确。
  • 对于一个特定的问题,算法应该是解决问题是最有效的方法。
  • 算法不应和具体的计算机代码相关。相反,算法的编写方式应使其可以在不同的编程语言中使用。

算法示例

这里列出了一些常见的简单的算法的步骤。

算法 1:求用户输入的两个数的和

  1. 开始
  2. 声明变量 num1num2sum
  3. 读取值 num1num2
  4. num1num2 相加并将结果赋值给 sum,即: sum = num1+num2
  5. 显示总和 sum
  6. 停止

算法 2:求三个数中最大的数

一下算法展示了如何求 abc 3 个数中最大数的算法。

  1. 开始

  2. 声明变量 abc

  3. 读取变量 abc

  4. 伪代码:

    If a > b
      If a > c
          a 是最大的
      Else
          c 是最大的
    Else
      If b > c
          b 是最大的
      Else
          c 是最大的
    
  5. 停止

算法 3:求一个数的阶乘

阶乘是一个数学概念,一个正整数的阶乘是所有小于或等于此数的所有正整数的积。比如的 5 的阶乘是 120。即: 5! = 5*4*3*2*1 = 120

以下展示了求一个数 n 的阶乘的算法:

  1. 开始

  2. 声明变量 nfactoriali

  3. 初始化变量: factorial = 1, i = 1

  4. 读取 n 的值

  5. 重复下面的步骤直到 i = n:

    1. factorial = factorial * i;
    2. i = i + 1;
  6. 显示阶乘

  7. 停止

算法 4:检查一个数是否为质数

质数(Prime number),又称素数,指在大于 1 的自然数中,除了 1 和该数自身外,无法被其他自然数整除的数(也可定义为只有 1 与该数本身两个正因数的数)。除了质数外,其他大于 1 的自然数被称为合数。

下面展示了判断一个数 n 是否为质数的算法:

  1. 开始

  2. 声明变量 niflag

  3. 初始化变量: flag = 1, i = 2

  4. 从用户处读取 n

  5. 重复以下步骤直到 i = (n / 2)

    1. 如果 n ÷ i 的余数等于 0,那么 flag = 0, 转到第 6 步
    2. i = i + 1
  6. 如果 flag = 0 显示 n 不是素数,否则显示 n 是素数。

  7. 停止

算法 5:输出 1000 以内的斐波那契数列

斐波那契数列是一个数学上常用的数列,由 0 和 1 开始,之后的每个数是由它之前的两数相加而得出。比如:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987

下面展示了输出 1000 以内的斐波那契数列的算法:

  1. 第 1 步:开始

  2. 第 2 步:声明变量 first_term、second_term 和 temp。

  3. 第三步:初始化变量: first_term = 0, second_term = 1

  4. 第 4 步:显示 first_termsecond_term

  5. 第 5 步:重复下面的步骤,直到 second_term ≤ 1000

    1. temp = second_term
    2. second_term = second_term + first_term
    3. first_term = temp
    4. 显示 second_term
  6. 第 6 步:停止