11.2 Complexity Analysis

Embed Size (px)

Citation preview

  • 7/30/2019 11.2 Complexity Analysis

    1/12

    11.2 Complexity Analysis

  • 7/30/2019 11.2 Complexity Analysis

    2/12

    Complexity AnalysisAs true computer scientists, we need a

    way to compare the efficiency of

    algorithms. Should we just use a stopwatch to time

    our programs?

    No, different processors will cause thesame program to run a different speeds.

    Instead, we will count the number ofoperations that must run.

  • 7/30/2019 11.2 Complexity Analysis

    3/12

    Counting Operationspublic static double avg(int[] a, int n){

    double sum=0;

    for(int j=0; j

  • 7/30/2019 11.2 Complexity Analysis

    4/12

    Grouping Complexities So the run-time of our average function

    depends on the size of the array. Here are

    some possibilities:Array size 1: runtime = 3(1) + 3 = 6

    Array size 50: runtime = 3(50) + 3 = 153

    Array size 1000: runtime = 3(1000) + 3 = 3003

    Notice that increasing the size of the array by a constant

    multiple has approximately the same effect on the runtime.

  • 7/30/2019 11.2 Complexity Analysis

    5/12

    Grouping Complexities In order to compare runtimes, it is

    convenient to have some grouping

    schema.

    Think of runtimes as a function of thenumber of inputs.

    How do mathematicians groupfunctions?

  • 7/30/2019 11.2 Complexity Analysis

    6/12

    Functions How might you describe these

    functions? What group do they

    belong to? f(x) = 3x + 5

    f(x) = 4x2 + 15x + 90

    f(x) = 10x3 30 f(x) = log(x+30)

    f(x) = 2(3x + 3)

    Linear

    Quadratic

    Cubic

    Logarithmic

    Exponential

  • 7/30/2019 11.2 Complexity Analysis

    7/12

    Big-O Notation Instead of using terms like linear,

    quadratic, and cubic, computer

    scientists use big-O notation to discussruntimes.

    A function with linear runtime is said to

    be of order n. The shorthand looks like this: O(n)

  • 7/30/2019 11.2 Complexity Analysis

    8/12

    Functions If the following are runtimes expressed

    as functions of the number of inputs

    (x), we would label them as follows: f(x) = 3x + 5

    f(x) = 4x2 + 15x + 90

    f(x) = 10x3 30 f(x) = log(x+30)

    f(x) = 2(3x + 3)

    O(n)

    O(n2)

    O(n3)

    O(log n)

    O(2n)

  • 7/30/2019 11.2 Complexity Analysis

    9/12

    O(n) Methodpublic static double avg(int[][] a){

    int sum=0, count=0;

    for(int j=0; j

  • 7/30/2019 11.2 Complexity Analysis

    10/12

    O(n2

    ) Methodpublic static void bubble(int[] a, int n){

    for (i=0; i

  • 7/30/2019 11.2 Complexity Analysis

    11/12

    The common Big-O values O(1) : constant

    O(log n): Logarithmic

    O(n) : Linear

    O(n logn) : n logn

    O(n2

    ): Quadratic O(n3): Cubic

    O(2n): exponential

  • 7/30/2019 11.2 Complexity Analysis

    12/12

    # of inputs

    # operations

    O(n3)

    O(n2)O(nlogn)

    O(n)

    O(logn)

    O(1)

    Algorithms are categorized by how their runtimeincreases in relation to the number of inputs.