原文: https://www.programiz.com/dsa/algorithm

在本教程中,我们将借助示例学习什么算法。

算法是依次解决问题的一组明确定义的指令。


好的算法的质量

  1. 输入和输出应精确定义。
  2. 算法中的每个步骤都应清晰明确。
  3. 在解决问题的许多不同方式中,算法应该是最有效的。
  4. 算法不应该包含计算机代码。 相反,应以可以在不同编程语言中使用的方式编写算法。

算法实例

将两个数字相加的算法

在三个数字中查找最大的算法

查找二次方程式的所有根的算法

查找阶乘的算法

检查素数的算法

斐波那契数列的算法


编程中的算法示例

编写一种算法,将用户输入的两个数字相加。

  1. Step 1: Start
  2. Step 2: Declare variables num1, num2 and sum.
  3. Step 3: Read values num1 and num2\.
  4. Step 4: Add num1 and num2 and assign the result to sum.
  5. sumnum1+num2
  6. Step 5: Display sum
  7. Step 6: Stop

编写一种算法来查找用户输入的三个不同数字中的最大数字。

Step 1: Start
Step 2: Declare variables a,b and c.
Step 3: Read variables a,b and c.
Step 4: If a > b
           If a > c
              Display a is the largest number.
           Else
              Display c is the largest number.
        Else
           If b > c
              Display b is the largest number.
           Else
              Display c is the greatest number.  
Step 5: Stop

编写算法来查找二次方程ax^2 + bx + c = 0的所有根。

Step 1: Start
Step 2: Declare variables a, b, c, D, x1, x2, rp and ip;
Step 3: Calculate discriminant
         D ← b2-4ac
Step 4: If D ≥ 0
              r1 ← (-b+√D)/2a
              r2 ← (-b-√D)/2a 
              Display r1 and r2 as roots.
        Else     
              Calculate real part and imaginary part
              rp ← b/2a
              ip ← √(-D)/2a
              Display rp+j(ip) and rp-j(ip) as roots
Step 5: Stop

编写算法来查找用户输入的数字的阶乘。

Step 1: Start
Step 2: Declare variables n, factorial and i.
Step 3: Initialize variables
          factorial ← 1
          i ← 1
Step 4: Read value of n
Step 5: Repeat the steps until i = n
     5.1: factorial ← factorial*i
     5.2: i ← i+1
Step 6: Display factorial
Step 7: Stop

编写算法来检查用户输入的数字是否为质数。

Step 1: Start
Step 2: Declare variables n, i, flag.
Step 3: Initialize variables
        flag ← 1
        i ← 2  
Step 4: Read n from the user.
Step 5: Repeat the steps until i=(n/2)
     5.1 If remainder of n÷i equals 0
            flag ← 0
            Go to step 6
     5.2 i ← i+1
Step 6: If flag = 0
           Display n is not prime
        else
           Display n is prime
Step 7: Stop

编写算法来找到直到项≤ 1000的斐波那契数列。

Step 1: Start 
Step 2: Declare variables first_term,second_term and temp. 
Step 3: Initialize variables first_term ← 0 second_term ← 1 
Step 4: Display first_term and second_term 
Step 5: Repeat the steps until second_term ≤ 1000 
     5.1: temp ← second_term 
     5.2: second_term ← second_term + first_term 
     5.3: first_term ← temp 
     5.4: Display second_term 
Step 6: Stop