Skip to content

什么是算法

从计算机编程的角度来讲,算法是解决特定的问题的一套定义明确的指令集。它接受一组输入,并产生期望的输出。例如,

一个两数相加的算法:

  1. 获得两个数字的输入
  2. 使用+运算符将数字相加
  3. 显示计算结果

何为一个好算法

  • 输入和输出应该被精确定义
  • 算法中的每一个步骤都应该清晰明确,不存在歧义
  • 在解决一个问题的众多不同方法中,算法应该是最为高效的。
  • 算法不应包含计算机代码。相反,算法的编写方式应使其能够在不同的编程语言中使用。

算法例子

算法1: 相加用户输入的2个数字
步骤 1: 开始
步骤 2: 声明变量 num1, num2 和 sum
步骤 3: 读变量 num1 和 num2
步骤 4: num1 和 num2 相加并把结果赋值给sum. sum <- num1 + num2
步骤 5: 展示num
步骤 6: 结束
算法2: 在3个数字中找到最大的数字
步骤 1: 开始
步骤 2: 声明变量a, b和c
步骤 3: 读取变量a, b和c
步骤 4: 如果 a > b
          如果 a > c
            输出 a 是最大的数字
          否则 
            输出 c 是最大的数字
        否则
          如果 b > c
            输出 b 是最大的数字
          否则
            输出 c 是最大的数字
步骤 5: 停止
算法3: 求一元二次方程的根 (ax2+bx+c=0)
步骤 1: 开始
步骤 2: 声明变量 a, b, c, D, x1, x2, rp 和 ip
步骤 3: 计算判别式 D <- b^2-4ac
步骤 4: 如果 D >= 0
            x1 <- (-b + 根号下D) / 2a
            x2 <- (-b - 根号下D) / 2a
            输出 x1 和 x2 作为根
       否则
          计算实部和虚部
          rp <- -b/2a
          ip <- 根号下-D/2a
          输出 rp+j(ip) 和 rp-j(ip) 作为根
步骤 5: 停止
算法4: 求一个数的阶乘
步骤 1: 开始
步骤 2: 声明变量n、阶乘factorial和i
步骤 3: 初始化变量
         factorial <- 1
         i <- 1
步骤 4: 读取n的值
步骤 5: 重复以下步骤直到 i = n
       5.1: factorial <- factorial * i
       5.2: i <- i + 1
步骤 6: 输出factorial
步骤 7: 结束
算法5:检查一个数是否为质数
步骤 1: 开始
步骤 2: 声明变量n、i、flag
步骤 3: 初始化变量
       flag <- 1
       i <- 2
步骤 4: 从用户输入读取n
步骤 5: 重复以下步骤直到 i=(n/2)
       5.1 如果n➗i的余数等于0
           flag <- 0
           跳到 步骤 6
       5.2 i <- i+1
步骤 6: 如果 flag = 0
          输出n不是质数
       否则
          输出n是质数
步骤 7: 结束
算法6:找出小于 1000 的斐波那契数列
步骤 1: 开始
步骤 2: 声明变量first_term、second_term、temp
步骤 3: 初始化变量 first_term <- 0 second_term <- 1
步骤 4: 输出first_term和second_term
步骤 5: 重复以下步骤直到 second_term <= 1000
        5.1: temp <- second_term
        5.2: second_term <- second_term + first_term
        5.3: first_term <- temp
        5.4: 输出 second_term
步骤 6: 结束