Presentation is loading. Please wait.

Presentation is loading. Please wait.

 O: order of magnitude  Look at the loops and to see whether the loops are nested. ◦ One single loop: O(n) ◦ A nested loop: O(n 2 ) ◦ A nested loop.

Similar presentations


Presentation on theme: " O: order of magnitude  Look at the loops and to see whether the loops are nested. ◦ One single loop: O(n) ◦ A nested loop: O(n 2 ) ◦ A nested loop."— Presentation transcript:

1

2  O: order of magnitude  Look at the loops and to see whether the loops are nested. ◦ One single loop: O(n) ◦ A nested loop: O(n 2 ) ◦ A nested loop in a loop: O(n 3 )

3 for (int i=0; i<n; i++) for (int j=0; j< n; j++) simple statement for(int k=0; k< n; k++) { simple statement 1 simple statement 2 simple statement 3 simple statement 4 simple statement 5 } Simple statement 6 …… Simple statement 30 n2n2 5n25

4  T(n) = n 2 + 5n + 25 Or T(n) = O(f(n)) These exists two constants, n0 and c (>0) and a function f(n) such that all n>n0, cf(n)  T(n). Translate as: If n gets sufficiently large, there is some constants c for which processing time will always be less than or equal to cf(n). cf(n) is an upper bound on the performance.

5  The growth rate of f(n) will be determined by the growth rate of the fastest growing term  It’s safe to ignore all constants and drop the lower order terms when determining the Big O for an algorithm

6 for (int i=0; i< n-1; i++) { for (int j=i+1; j<n; j++) { Simple statement 1 Simple statement 2 Simple statement 3 } T(n) = 3(n-1) +3(n-2) + 3(n-3)+…..+3 = 3(n-1+n-2+n-3+….+1) = 3n(n-1)/2 = 1.5n 2 -1.5n n 0 =1, c = 1.5 1.5n 2  1.5n 2 -1.5n

7

8 for (i=0; i< x.length; i *=2) { // print out i } -The loop body will execute k-1 times with i: 1,2,4,8,16… until 2 k > x.length -2 k-1 <= x.length < 2 k -K-1 <= log 2 (x.length) < k -So this loop has O(log 2 n)

9 1. for (int i=0; i<n; i++) for (int j=0; j<n; j++) System.out.println(i+” “+j); 2. for (int i=0; i<n; i++) for (int j=0; j<2; j++) System.out.println(i+” “+j);

10 3. for (int i=0; i<n; i++) for (int j=n-1; j>=i; j--) System.out.println(i+” “+j); 4. for (int i=0; i<n; i++) for (int j=0; j<i; j++) if (j %i == 0) System.out.println(i+” “+j);

11 for (int i=1; i<=n; i++) for (int j=1; j<=n; j++) for (int k=n; k>=1 ; k--) { Int sum = i+j+k; }

12  If T(n) is the form of a polynomial of degree d (d is the highest exponent), then it is O(n d ).  O(1) represents a constant growth rate. This value doesn’t change with the number of inputs. Any finite number of O(1) steps is still O(1)

13 public static boolean areUnique(int[] x) { for(int i=0; i< x.length; i++) { for (int j=0; j<x.length; j++) { if (i != j && x[i] == x[j]) return false; } return true; }

14 Big OName O(1)Constant O(log n)Logarithmic O(n)Linear O(n log n)Log-linear O(n 2 )Quadratic O(n 3 )Cubic O(2 n )Exponential O(n!)Factorial

15 15


Download ppt " O: order of magnitude  Look at the loops and to see whether the loops are nested. ◦ One single loop: O(n) ◦ A nested loop: O(n 2 ) ◦ A nested loop."

Similar presentations


Ads by Google