为了编写算法,需要以下条件作为先决条件:
- 这个算法要解决的问题。
- 解决问题时必须考虑的问题的约束条件。
- 用于解决问题的输入。
- 问题解决后的预期输出。
- 在给定的约束条件下,此问题的解决方案。
然后在上述参数的帮助下编写算法以解决问题。
示例:考虑将三个数字相加并打印总和的示例
第 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 次,都出现在这个部分。 例如循环、递归等。
除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!