We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 19
Data Structures Using C++ 2E
Chapter 1 Software Engineering Principles and C+ + Classes 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
Data Structures Using C++ 2E 2
Algorithm Analysis: The Big-O Notation (cont’d.) • Example (cont’d.) – 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
FIGURE 1-2 Package delivering scheme
Data Structures Using C++ 2E 3 Algorithm Analysis: The Big-O Notation (cont’d.) • Example (cont’d.) – 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
FIGURE 1-3 Another package delivery scheme
Data Structures Using C++ 2E 4 Algorithm Analysis: The Big-O Notation (cont’d.) • Example (cont’d.) – 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) = n2+n • Function of n2
Data Structures Using C++ 2E 5
Algorithm Analysis: The Big-O Notation (cont’d.) • Analyzing an algorithm – Count number of operations performed • Not affected by computer speed
TABLE 1-1 Various values of n, 2n, n2, and n2 + n
Data Structures Using C++ 2E 6
Algorithm Analysis: The Big-O Notation (cont’d.) • Example 1-1 – Illustrates fixed number of executed operations
Data Structures Using C++ 2E 7
Algorithm Analysis: The Big-O Notation (cont’d.) • Example 1-2 – Illustrates dominant operations
Data Structures Using C++ 2E 8
Algorithm Analysis: The Big-O Notation (cont’d.) • 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
Data Structures Using C++ 2E 9
Algorithm Analysis: The Big-O Notation (cont’d.)
TABLE 1-2 Growth rates of various functions
Data Structures Using C++ 2E 10
Algorithm Analysis: The Big-O Notation (cont’d.) TABLE 1-3 Time for f(n) instructions on a computer that executes 1 billion instructions per second
Figure 1-4 Growth rate
of functions in Table 1-3 Data Structures Using C++ 2E 11 Algorithm Analysis: The Big-O Notation (cont’d.) • 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)=n2 (no linear term) • f(n)=n2 + 4n + 20
Data Structures Using C++ 2E 12
Algorithm Analysis: The Big-O Notation (cont’d.) • As n becomes larger and larger – Term 4n + 20 in f(n) becomes insignificant – Term n2 becomes dominant term
TABLE 1-4 Growth rate of n2 and n2 + 4n + 20n
Data Structures Using C++ 2E 13
Algorithm Analysis: The Big-O Notation (cont’d.) • 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(n2) or Big-O of n2 • 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 n0 such that f(n) <= cg(n) for all n >= n0
Data Structures Using C++ 2E 14
Algorithm Analysis: The Big-O Notation (cont’d.) TABLE 1-5 Some Big-O functions that appear in algorithm analysis
Data Structures Using C++ 2E 15
Data Structures Using C++ 2E
Chapter 2 Object-Oriented Design (OOD) and C++ Objectives
• Learn about inheritance
• Learn about derived and base classes • Explore how to redefine the member functions of a base class • Examine how the constructors of base and derived classes work • Learn how to construct the header file of a derived class
Data Structures Using C++ 2E 17
Objectives (cont’d.)
• Explore three types of inheritance: public,
protected, and private • Learn about composition • Become familiar with the three basic principles of object-oriented design • Learn about overloading • Become aware of the restrictions on operator overloading
Data Structures Using C++ 2E 18
Objectives (cont’d.)
• Examine the pointer this
• Learn about friend functions • Explore the members and nonmembers of a class • Discover how to overload various operators • Learn about templates • Explore how to construct function templates and class templates