0% found this document useful (0 votes)
18 views

Chapter 1

Uploaded by

Israa M Alqatow
Copyright
© © All Rights Reserved
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
0% found this document useful (0 votes)
18 views

Chapter 1

Uploaded by

Israa M Alqatow
Copyright
© © All Rights Reserved
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

Data Structures Using C++ 2E 19

You might also like