Menu Close

如何设计算法?

为了编写算法,需要以下条件作为先决条件:

  • 这个算法要解决的问题。
  • 解决问题时必须考虑的问题的约束条件。
  • 用于解决问题的输入。
  • 问题解决后的预期输出。
  • 在给定的约束条件下,此问题的解决方案。

然后在上述参数的帮助下编写算法以解决问题。

示例:考虑将三个数字相加并打印总和的示例

第 1 步:满足先决条件
如上所述,为了编写算法,必须满足其先决条件。

  • 该算法要解决的问题是:将 3 个数字相加并打印它们的和。
  • 解决问题时必须考虑的问题约束:数字必须只包含数字,不能包含其他字符。
  • 解决问题的输入:要相加的三个数字。
  • 解决问题时预期的输出:作为输入的三个数字的总和。
  • 这个问题的解决方案,在给定的约束条件下: 该解决方案包括将 3 个数字相加。 它可以在“+”运算符的帮助下完成,或按位,或任何其他方法。

第 2 步:设计算法
现在让我们在上述先决条件的帮助下设计算法:
将 3 个数字相加并打印它们的总和的算法:

  • 开始
  • 声明 3 个整数变量 num1、num2 和 num3。
  • 将要相加的三个数分别作为变量 num1、num2 和 num3 的输入。
  • 声明一个整数变量 sum 来存储 3 个数字的结果总和。
  • 将 3 个数字相加并将结果存储在变量 sum 中。
  • 打印变量 sum 的值
  • 结尾

第 3 步:通过实现算法来测试算法。
为了测试算法,让我们用C语言实现它。

/ C program to add three numbers
// with the help of above designed algorithm

#include

int main()
{

// Variables to take the input of the 3 numbers
int num1, num2, num3;

// Variable to store the resultant sum
int sum;

// Take the 3 numbers as input
printf("Enter the 1st number: ");
scanf("%d", &num1);
printf("%d\n", num1);

printf("Enter the 2nd number: ");
scanf("%d", &num2);
printf("%d\n", num2);

printf("Enter the 3rd number: ");
scanf("%d", &num3);
printf("%d\n", num3);

// Calculate the sum using + operator
// and store it in variable sum
sum = num1 + num2 + num3;

// Print the sum
printf("\nSum of the 3 numbers is: %d", sum);

return 0;
}
Enter the 1st number: 0
Enter the 2nd number: 0
Enter the 3rd number: -1577141152

Sum of the 3 numbers is: -1577141152
  • 先验分析:“先验”的意思是“之前”。 因此,先验分析意味着在算法实现之前检查算法。 在这种情况下,算法在以理论步骤的形式编写时进行检查。 算法的这种效率是通过假设所有其他因素(例如处理器速度)是恒定的并且对实现没有影响来衡量的。 这通常由算法设计者完成。 正是在这种方法中,确定了算法复杂度。
  • 后验分析:“后验”的意思是“之后”。 因此,后验分析意味着在算法实现后检查算法。 在这种情况下,通过在任何编程语言中实现算法并执行它来检查算法。 此分析有助于获得有关正确性、所需空间、消耗时间等的实际和真实分析报告。

时间因素:时间是通过计算排序算法中比较等关键操作的次数来衡量的。
空间因素:空间是通过计算算法所需的最大内存空间来衡量的。

什么是空间复杂度?

算法的空间复杂度是指该算法执行并获得结果所需的内存量。 这可以用于输入、临时操作或输出。

如何计算空间复杂度?

算法的空间复杂度是通过确定以下 2 个部分来计算的:

  • 固定部分:指算法肯定需要的空间。 例如输入变量、输出变量、程序大小等。
  • 变量部分:这是指根据算法的实现可以不同的空间。 例如临时变量、动态内存分配、递归栈空间等。

什么是时间复杂度?

算法的时间复杂度是指该算法执行并获得结果所需的时间量。 这可以用于正常操作、条件 if-else 语句、循环语句等。

如何计算时间复杂度?

算法的时间复杂度也通过确定以下 2 个组件来计算:

  • 恒定时间部分:任何只执行一次的指令都在这部分。 例如输入、输出、if-else、switch等。
  • 可变时间部分:任何被执行不止一次的指令,比如 n 次,都出现在这个部分。 例如循环、递归等。

 

READ  什么是算法?
除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Leave the field below empty!

Posted in 算法