为了编写算法,需要以下条件作为先决条件:
- 这个算法要解决的问题。
- 解决问题时必须考虑的问题的约束条件。
- 用于解决问题的输入。
- 问题解决后的预期输出。
- 在给定的约束条件下,此问题的解决方案。
然后在上述参数的帮助下编写算法以解决问题。
示例:考虑将三个数字相加并打印总和的示例
第 1 步:满足先决条件
如上所述,为了编写算法,必须满足其先决条件。
- 该算法要解决的问题是:将 3 个数字相加并打印它们的和。
- 解决问题时必须考虑的问题约束:数字必须只包含数字,不能包含其他字符。
- 解决问题的输入:要相加的三个数字。
- 解决问题时预期的输出:作为输入的三个数字的总和。
- 这个问题的解决方案,在给定的约束条件下: 该解决方案包括将 3 个数字相加。 它可以在“+”运算符的帮助下完成,或按位,或任何其他方法。
第 2 步:设计算法
现在让我们在上述先决条件的帮助下设计算法:
将 3 个数字相加并打印它们的总和的算法:
- 开始
- 声明 3 个整数变量 num1、num2 和 num3。
- 将要相加的三个数分别作为变量 num1、num2 和 num3 的输入。
- 声明一个整数变量 sum 来存储 3 个数字的结果总和。
- 将 3 个数字相加并将结果存储在变量 sum 中。
- 打印变量 sum 的值
- 结尾
第 3 步:通过实现算法来测试算法。
为了测试算法,让我们用C语言实现它。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
/ 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; } |
1 2 3 4 5 |
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 次,都出现在这个部分。 例如循环、递归等。
除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!