A[2] * A[3] - ....etc. For this exercise, we would like to implement two solutions and compare their complexity / performance in terms of computation time. Solution 1: Implement blindly the following algorithms: for each element B[i], compute A[0] * A[1] * A[2] * .... *A[i] and save the result in B[i];
Consider an array A of N values (N entered by the user). Write a C program that creates a second array B such that the i-th element of B, i.e., B[i] is equal to A[0] *
A[1] * A[2] * ... A[i]; In other words:
- B[0] = A[0]
- B[1] = A[0] * A[1];
- B[2] = A[0] * A[1] * A[2];
- B[3] = A[0] * A[1] * A[2] * A[3]
- ....etc.
For this exercise, we would like to implement two solutions and compare their complexity /
performance in terms of computation time.
Solution 1: Implement blindly the following
A[1] * A[2] * .... *A[i] and save the result in B[i];
To test the solution, create an array A of 1000 elements and initialize each of its elements with a
random value (instead of asking the user to . To do that, use the function rand, which, every time
called, returns a random number
Questions:
- How long does your program take to produce the solution?
- Analyze the solution above and explain why it is taking long time. What are the main
factors that affect how long your program takes to run (computation time)?
then Think of a better solution that will significantly speed your
program, implement it. Then, compare its computation time to the previous one and explain
why the proposed solution is better then the previous one.
Step by step
Solved in 3 steps with 2 images