Chapter 01 - A Practical Introduction to
Data Structures and Algorithm Analysis
data structures & algorithms 1
The Need for Data Structures
Data structures organize data
more efficient programs.
More powerful computers
more complex applications.
More complex applications demand
more calculations.
Complex computing tasks are unlike our
everyday experience.
data structures & algorithms 2
What is a data structure?
In a general sense, any data
representation is a data structure.
Example: An integer
More typically, a data structure is meant
to be an organization for a collection of
data items.
data structures & algorithms 3
Organizing Data
Any organization for a collection of records
can be searched, processed in any order,
or modified.
The choice of data structure and algorithm
can make the difference between a
program running in a few seconds or many
days.
data structures & algorithms 4
Efficiency
A solution is said to be efficient if it solves
the problem within its resource constraints.
Space
Time
The cost of a solution is the amount of
resources that the solution consumes.
data structures & algorithms 5
Costs and Benefits
A data structure requires a certain
amount of:
space for each data item it stores
time to perform a single basic operation
programming effort.
data structures & algorithms 6
Example: Banking Application
Operations are (typically):
Open accounts (far less often than access)
Close accounts (far less often than access)
Access account to Add money
Access account to Withdraw money
data structures & algorithms 7
Example: Banking Application
Teller and ATM transactions are expected to
take little time.
Opening or closing an account can take
much longer (perhaps up to an hour).
data structures & algorithms 8
Example: Banking Application
When considering the choice of data
structure to use in the database system that
manages the accounts, we look for a data
structure that:
Is inefficient for deletion
Highly efficient for search
Moderately efficient for insertion
data structures & algorithms 9
Example: Banking Application
One data structure that meets these requirements is
the hash table
Records are accessible by account number (called an
exact-match query)
Hash tables allow for extremely fast exact-match
search.
Hash tables also support efficient insertion of new
records.
Deletions can also be supported efficiently (but too
many deletions lead to some degradation in
performance – requiring the hash table to be
reorganized).
data structures & algorithms 10
Example: City Database
Database system for cities and towns.
Users find information about a
particular place by name (exact-match
query)
Users also find all places that match a
particular value (or range of values),
such as location or population size
(called a range query).
data structures & algorithms 11
Example: City Database
The database must answer queries quickly
enough to satisfy the patience of a typical user.
For an exact-match query, a few seconds is
satisfactory
For a range queries, the entire operation may
be allowed to take longer, perhaps on the order
of a minute.
data structures & algorithms 12
Selecting a Data Structure
Select a data structure as follows:
1. Analyze the problem to determine the resource
constraints a solution must meet.
2. Determine the basic operations that must be
supported. Quantify the resource constraints
for each operation.
3. Select the data structure that best meets these
requirements.
data structures & algorithms 13
Some Questions to Ask
Are all data inserted into the data structure
at the beginning, or are insertions
intersparsed with other operations?
Can data be deleted?
Are all data processed in some well-
defined order, or is random access
allowed?
data structures & algorithms 14
Data Structure Philosophy
Each data structure has costs and benefits.
Rarely is one data structure better than
another in all situations.
A data structure requires:
space for each data item it stores,
time to perform each basic operation,
programming effort.
data structures & algorithms 15
Philosophy cont…
Each problem has constraints on available
space and time.
Only after a careful analysis of problem
characteristics can we know the best data
structure for the task.
Bank example:
Start account: a few minutes
Transactions: a few seconds
Close account: overnight
data structures & algorithms 16
Abstract Data Types
Abstract Data Type (ADT): a definition for
a data type solely in terms of a set of
values and a set of operations on that data
type.
Each ADT operation is defined by its inputs
and outputs.
Encapsulation: Hide implementation
details.
data structures & algorithms 17
ADT
The concept of abstraction means:
1. We know what a data type can do.
2. How it is done is hidden.
Abstract data type:
1. Definition of data.
2. Definition of operations.
3. Encapsulation of data and operation.
data structures & algorithms 18
Data Structure
A data structure is the physical implementation of an ADT.
Each operation associated with the ADT is implemented by one
or more subroutines in the implementation.
In a OO language such as C++, an ADT and its
implementation together make up a class.
Data structure usually refers to an organization for data in
main memory.
File structure: an organization for data on peripheral
storage, such as a disk drive.
data structures & algorithms 19
Labeling collections of objects
Humans deal with complexity by assigning a label
to an assembly of objects.
An ADT manages complexity through abstraction.
Hierarchies of labels
Ex1: transistors gates CPU.
In a program, to implement an ADT, then think only
about the ADT, not its implementation.
data structures & algorithms 20
Logical vs. Physical Form
Data items have both a logical and a physical form.
Logical form: definition of the data item within an
ADT.
Ex: Integers in mathematical sense: +ve, -ve
Physical form: implementation of the data item within
a data structure.
Ex: 16/32 bit integers, overflow.
data structures & algorithms 21
Problems, Algorithms and
Programs
Programmers deal with:
problems,
algorithms and
computer programs.
These are distinct concepts…
data structures & algorithms 23
Problems
Problem: a task to be performed.
Best thought of as inputs and matching
outputs.
Problem definition should include constraints
on the resources that may be consumed by
any acceptable solution.
data structures & algorithms 24
Problems (cont)
Problems mathematical functions
A function is a matching between inputs (the domain)
and outputs (the range).
An input to a function may be single number, or a
collection of information.
The values making up an input are called the
parameters of the function.
A particular input must always result in the same
output every time the function is computed.
data structures & algorithms 25
Algorithms and Programs
Algorithm: a method or a process followed to solve a
problem.
A recipe: The algorithm gives us a “recipe” for solving the
problem by performing a series of steps, where each step is
completely understood and doable.
An algorithm takes the input to a problem (function)
and transforms it to the output.
A mapping of input to output.
A problem can be solved by many algorithms.
data structures & algorithms 26
A problem can have many
algorithms
For example, the problem of sorting can be
solved by the following algorithms:
Insertion sort
Bubble sort
Selection sort
Shellsort
Mergesort
Others
data structures & algorithms 27
Algorithm Properties
Properties of algorithms:
It must be correct.
It must be composed of a series of concrete
steps.
There can be no ambiguity as to which step
will be performed next.
It must be composed of a finite number of
steps.
It must terminate.
.
data structures & algorithms 28
Programs
A computer program is a concrete
representation of an algorithm in some
programming language.
Naturally, there are many programs that
are instances of the same algorithms, since
any modern programming language can be
used to implement any algorithm.
data structures & algorithms 29
To Summarize:
A problem is a function or a mapping of
inputs to outputs.
An algorithm is a recipe for solving a
problem whose steps are concrete and
non-ambiguous.
A program is an instantiation of an
algorithm in a computer programming
language.
data structures & algorithms 30
Example
Problem: find y = x to the power of 2
Algorithm1: Multiply X by X
Algorithm2: Add X to itself X times
Program1: for (int i = 0; i<x; i++)
y +=x;
data structures & algorithms 31
In class exercises
Write an algorithm to compute the sum of the first n
counting numbers
calcSum (integer n)
Sum 0
for i 1 to n
sum sum + i
return sum
data structures & algorithms 32