Download presentation

Presentation is loading. Please wait.

Published byIsis Flook Modified over 2 years ago

1
Data Structures Using C++ 2E The Big-O Notation and Array-Based Lists

2
Data Structures Using C++ 2E2 Algorithm Analysis: The Big-O Notation Analyze algorithm after design Example –50 packages delivered to 50 different houses –50 houses one mile apart, in the same area FIGURE 1-1 Gift shop and each dot representing a house

3
Algorithm Analysis: The Big-O Notation (contd.) Example (contd.) –Driver picks up all 50 packages –Drives one mile to first house, delivers first package –Drives another mile, delivers second package –Drives another mile, delivers third package, and so on –Distance driven to deliver packages 1+1+1+… +1 = 50 miles –Total distance traveled: 50 + 50 = 100 miles Data Structures Using C++ 2E3 FIGURE 1-2 Package delivering scheme

4
Algorithm Analysis: The Big-O Notation (contd.) Example (contd.) –Similar route to deliver another set of 50 packages Driver picks up first package, drives one mile to the first house, delivers package, returns to the shop Driver picks up second package, drives two miles, delivers second package, returns to the shop –Total distance traveled 2 * (1+2+3+…+50) = 2550 miles Data Structures Using C++ 2E4 FIGURE 1-3 Another package delivery scheme

5
Data Structures Using C++ 2E5 Algorithm Analysis: The Big-O Notation (contd.) Example (contd.) –n packages to deliver to n houses, each one mile apart –First scheme: total distance traveled 1+1+1+… +n = 2n miles Function of n –Second scheme: total distance traveled 2 * (1+2+3+…+n) = 2*(n(n+1) / 2) = n 2 +n Function of n 2

6
Data Structures Using C++ 2E6 Algorithm Analysis: The Big-O Notation (contd.) Analyzing an algorithm –Count number of operations performed Not affected by computer speed TABLE 1-1 Various values of n, 2n, n 2, and n 2 + n

7
Data Structures Using C++ 2E Algorithm Analysis: The Big-O Notation (contd.) Example 1-1 –Illustrates fixed number of executed operations 1 operation 2 operations 1 operation 3 operations Total of 9 operations

8
Data Structures Using C++ 2E Algorithm Analysis: The Big-O Notation Example 1-2 Illustrates dominant operations 2 operations 1 operation N+1 operations 2N operations N operations 3 operations 1 operation 2 operations 1 operation 3 operation If the while loop executes N times then: 2+1+1+1+5*N + 1 + 3 + 1 + (2 ) + 3 = 5N+(15 )

9
Example For(i=1; i<=5; i++) For(j=1;j<=5; j++) { Cout<<*; Sum=sum+j; } 1 op 6 op 5 op 30 op25 op Finally: 147 For(i=1; i<=n; i++) For(j=1; j<=n; j++) { cout<<*; Sum=sum+j; } 2n+2+ 2n 2 +2n+ 3n 2 = 5n 2 + 4n+2 Data Structures Using C++ 2E

10
10 Algorithm Analysis: The Big-O Notation (contd.) Search algorithm –n: represents list size –f(n): count function Number of comparisons in search algorithm –c: units of computer time to execute one operation –cf(n): computer time to execute f(n) operations –Constant c depends computer speed (varies) –f(n): number of basic operations (constant) –Determine algorithm efficiency Knowing how function f(n) grows as problem size grows

11
Data Structures Using C++ 2E11 Algorithm Analysis: The Big-O Notation (contd.) TABLE 1-2 Growth rates of various functions

12
Data Structures Using C++ 2E12 Algorithm Analysis: The Big-O Notation (contd.) Figure 1-4 Growth rate of functions in Table 1-3 TABLE 1-3 Time for f(n) instructions on a computer that executes 1 billion instructions per second

13
Data Structures Using C++ 2E13 Algorithm Analysis: The Big-O Notation (contd.) Notation useful in describing algorithm behavior –Shows how a function f(n) grows as n increases without bound Asymptotic –Study of the function f as n becomes larger and larger without bound –Examples of functions g(n)=n 2 (no linear term) f(n)=n 2 + 4n + 20

14
Data Structures Using C++ 2E14 Algorithm Analysis: The Big-O Notation (contd.) As n becomes larger and larger –Term 4n + 20 in f(n) becomes insignificant –Term n 2 becomes dominant term TABLE 1-4 Growth rate of n 2 and n 2 + 4n + 20n

15
Data Structures Using C++ 2E15 Algorithm Analysis: The Big-O Notation (contd.) Algorithm analysis –If function complexity can be described by complexity of a quadratic function without the linear term We say the function is of O(n 2 ) or Big-O of n 2 Let f and g be real-valued functions –Assume f and g nonnegative For all real numbers n, f(n) >= 0 and g(n) >= 0 f(n) is Big-O of g(n): written f(n) = O(g(n)) –If there exists positive constants c and n 0 such that f(n) = n 0

16
Data Structures Using C++ 2E16 Algorithm Analysis: The Big-O Notation (contd.) TABLE 1-5 Some Big-O functions that appear in algorithm analysis

17
Data Structures Using C++ 2E17 Array-Based Lists List –Collection of elements of same type Length of a list –Number of elements in the list Many operations may be performed on a list Store a list in the computers memory –Using an array

18
Data Structures Using C++ 2E18 Array-Based Lists (contd.) Three variables needed to maintain and process a list in an array –The array holding the list elements –A variable to store the length of the list Number of list elements currently in the array –A variable to store array size Maximum number of elements that can be stored in the array Desirable to develop generic code –Used to implement any type of list in a program –Make use of templates

19
Data Structures Using C++ 2E19 Array-Based Lists (contd.) Define class implementing list as an abstract data type (ADT) FIGURE 3-29 UML class diagram of the class arrayListType

20
Data Structures Using C++ 2E20 Array-Based Lists (contd.) Definitions of functions isEmpty, isFull, listSize and maxListSize

21
Data Structures Using C++ 2E21 Array-Based Lists (contd.) Template print (outputs the elements of the list) and template isItemAtEqual

22
Data Structures Using C++ 2E22 Array-Based Lists (contd.) Template insertAt

23
Data Structures Using C++ 2E23 Array-Based Lists (contd.) Template insertEnd and template removeAt

24
Data Structures Using C++ 2E24 Array-Based Lists (contd.) Template replaceAt and template clearList

25
Data Structures Using C++ 2E25 Array-Based Lists (contd.) Definition of the constructor and the destructor

26
Data Structures Using C++ 2E26 Array-Based Lists (contd.) Copy constructor –Called when object passed as a (value) parameter to a function –Called when object declared and initialized using the value of another object of the same type –Copies the data members of the actual object into the corresponding data members of the formal parameter and the object being created

27
Data Structures Using C++ 2E27 Array-Based Lists (contd.) Copy constructor (contd.) –Definition

28
Data Structures Using C++ 2E28 Array-Based Lists (contd.) Overloading the assignment operator – Definition of the function template

29
Data Structures Using C++ 2E29 Array-Based Lists (contd.) Searching for an element –Linear search example: d etermining if 27 is in the list –Definition of the function template FIGURE 3-32 List of seven elements

30
Data Structures Using C++ 2E30 Array-Based Lists (contd.) Inserting an element

31
Data Structures Using C++ 2E31 Array-Based Lists (contd.) Removing an element

32
Data Structures Using C++ 2E32 Array-Based Lists (contd.) TABLE 3-1 Time complexity of list operations

Similar presentations

© 2017 SlidePlayer.com Inc.

All rights reserved.

Ads by Google