Please analyze the run time of the following two programs in terms of the tightest Big O.

C++ Programming: From Problem Analysis to Program Design
8th Edition
ISBN:9781337102087
Author:D. S. Malik
Publisher:D. S. Malik
Chapter15: Recursion
Section: Chapter Questions
Problem 8SA
icon
Related questions
Question

Please analyze the run time of the following two programs in terms of the tightest Big O.

 

(1) int foo(int[] a) {
int n = a.length;
int c = 0;
for (int j=0;j<100;j++) {
for (int k=0;k<n;k++) {
for (int t=n; t>0;t=t/2) {
if (a[t-1]>a[t/2]) c++;
}
}
}
return c;
}
(2) long powHelper (long b, long k, long a) {
(k==0) return a;
if
else if (k==1) return a*b;
else {
long p = k/2;
long x = powHelper (b, p, 1);
return powHelper (b, k - 2*p, a*x*x);
}
}
long pow (long b, long k) { return powHelper(b, k, 1); }
(Hint: If we think about it, k
2*p can either be 0 or 1.)
Transcribed Image Text:(1) int foo(int[] a) { int n = a.length; int c = 0; for (int j=0;j<100;j++) { for (int k=0;k<n;k++) { for (int t=n; t>0;t=t/2) { if (a[t-1]>a[t/2]) c++; } } } return c; } (2) long powHelper (long b, long k, long a) { (k==0) return a; if else if (k==1) return a*b; else { long p = k/2; long x = powHelper (b, p, 1); return powHelper (b, k - 2*p, a*x*x); } } long pow (long b, long k) { return powHelper(b, k, 1); } (Hint: If we think about it, k 2*p can either be 0 or 1.)
Expert Solution
steps

Step by step

Solved in 2 steps

Blurred answer
Knowledge Booster
Hiring Problem
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
C++ Programming: From Problem Analysis to Program…
C++ Programming: From Problem Analysis to Program…
Computer Science
ISBN:
9781337102087
Author:
D. S. Malik
Publisher:
Cengage Learning