1 / 15

Big O notation

Big O notation. Big O Notation (informal definition). 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 ). Formal definition of Big O. for ( int i =0; i <n; i ++)

gino
Télécharger la présentation

Big O notation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Big O notation

  2. Big O Notation (informal definition) • 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(n2) • A nested loop in a loop: O(n3)

  3. Formal definition of Big O for (inti=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 n2 5n 25

  4. Formal definition of Big O • T(n) = n2 + 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. Formal definition of Big O • 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. Example for (inti=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.5n2 -1.5n n0=1, c = 1.5 1.5n2 1.5n2-1.5n

  7. Example

  8. Example 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 2k > x.length • 2k-1 <= x.length < 2k • K-1 <= log2(x.length) < k • So this loop has O(log2n)

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

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

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

  12. Common rule for polynomials • If T(n) is the form of a polynomial of degree d (d is the highest exponent), then it is O(nd). • 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. Example public static booleanareUnique(int[] x) { for(inti=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. Comparing Performance

  15. Efficiency of Algorithms

More Related