You are on page 1of 17

TCSS 342 Autumn 2004

Version 1.1
1
TCSS 342
Data Structures &
Algorithms
Autumn 2004
Ed Hong
TCSS 342 Autumn 2004
Version 1.1
2
Course Objectives
• (Broad) Prepare you to be a
good software engineer


• (Specific) Learn basic data
structures and algorithms
– Data structures – how data is
organized
– Algorithms – unambiguous
sequence of steps to compute
something
TCSS 342 Autumn 2004
Version 1.1
3
Software Design Goals

TCSS 342 Autumn 2004
Version 1.1
4
Course Content
Data Structures
Algorithms

Data Structures + Algorithms =
Programs

Algorithm analysis – determining how
long an algorithm will take to solve a
problem
Who cares? Aren’t computers fast
enough and getting faster?
TCSS 342 Autumn 2004
Version 1.1
5
An Example

Given an array of 1,000,000 integers,
find the maximum integer in the array.





Now suppose we are asked to find the
kth largest element. (The Selection
Problem)

0 1 2 999,999
TCSS 342 Autumn 2004
Version 1.1
6
Candidate Solutions
+ Candidate solution 1
Sort the entire array (from small to
large), using Java’s Arrays.sort()
Pick out the (1,000,000 – k)th
element.

+ Candidate solution 2
Sort the first k elements.
For each of the remaining
(1,000,000 – k) elements,
keep the k largest in an array.
Pick out the smallest of the k
survivors.
TCSS 342 Autumn 2004
Version 1.1
7
Is either solution good?

• Is there a better solution?

• How would you go about
determining the answer to these
questions?
TCSS 342 Autumn 2004
Version 1.1
8
Method 1
Code each algorithm and run them to
see how long they take.


Problem: How will you know if there
is a better program or whether there
is no better program?

What will happen when the number of
inputs is twice as many? Three? A
hundred?
TCSS 342 Autumn 2004
Version 1.1
9
Method 2
Develop a model of the way computers
work and compare how the
algorithms behave in the model.

Goal: To be able to predict
performance at a coarse level. That
is, to be able to distinguish between
good and bad algorithms.

Another benefit: when assumptions
change, we can predict the effects of
those changes.
TCSS 342 Autumn 2004
Version 1.1
10
Why algorithm analysis?

As computers get faster and problem
sizes get bigger, analysis will
become more important.

Why? The difference between good
and bad algorithms will get bigger.
TCSS 342 Autumn 2004
Version 1.1
11
Why data structures?

When programming, you are an
engineer.
Engineers have a bag of tools and
tricks – and the knowledge of which
tool is the right one for a given
problem.

Arrays, lists, stacks, queues, trees, hash
tables, graphs.


TCSS 342 Autumn 2004
Version 1.1
12
Software Development
Practices
• Modular code
• Appropriate commenting of code
– Each method needs a comment
explaining its parameters and its
behavior.
• Debugging with integrated
development environment (IDE)
• Incremental development
• Unified modeling language (UML)


TCSS 342 Autumn 2004
Version 1.1
13
Mathematical Background
• Exponents
X
A
X
B
= X
A+B
X
A
/ X
B
= X
A-B
(X
A
)
B
= X
AB

X
N
+X
N
= 2X
N
2
N
+2
N
= 2
N+1

• Logarithms
Definition: X
A
= B if and only if
log
X
B = A.


TCSS 342 Autumn 2004
Version 1.1
14
Logarithms, continued
• log AB = log A + log B

• Proof:
1 , 0 , ,
log
log
log = > = A C B A
A
B
B
C
C
A
TCSS 342 Autumn 2004
Version 1.1
15
Logarithms, Series
• log A/B = log A – log B
• log (A
B
) = B log A

Series


• binary representation of
numbers
1 2 2
1
0
÷ =
+
=
¿
N
N
i
i
2
) 1 (
1
+
=
¿
=
N N
i
N
i
TCSS 342 Autumn 2004
Version 1.1
16
Series


• Geometric progression: for a>0,
a ≠1


) 1 /( ) 1 (
1
0
a a a
N
N
i
i
÷ ÷ =
+
=
¿
a
TCSS 342 Autumn 2004
Version 1.1
17
Boolean Logic
• Let P and Q be statements.
• “not P” is true if P is false.
• “P and Q” is true if both P and
Q are true.
• “P or Q” is true if one of or both
P or Q are true.
• “P implies Q” is true if P is
false or Q is true (or both).
P ÷
Q P.
Q Pv
Q P Q P v ÷ = ÷