Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 28

DATA STRUCTURES

(CS212D)

Overview & Review


Instructor Information
2

 Instructor Information:
 .
 Room:
 Email: @pnu.edu.sa
Course objectives
 Be familiar with problem solving.
 Be familiar with basic techniques of
algorithm analysis.
 Be familiar with the concept of recursion.
 Master the implementation of linked data
structures such as linked lists, stacks, and
queues.
Course objectives Cont.
 Be familiar with advanced data structures such as
balanced search trees, graphs and hash tables.
 Master analyzing problems and writing program

solutions to problems using the above techniques


 Be able to select appropriate data structures and

algorithms for given problems


Course Outline
 Introduction to data structures
 Arrays
 Recursion
 Linked Lists
 Stacks and queues
 Trees
 Graphs
 Hash tables
Course Material
 Textbook: Data Structures & Algorithms in JAVA (6th Edition),
by M. Goodrich, R. Tamassia and M. Goldwasser , John Wiley &
Sons, inc., 2014.
 Lecture hand-outs
 Lab notes and exercises
Grading/Evaluation

Course Assessment
Percent Week
Tools
Mid term 1 15% 7(4/3)
Mid term 2 15% 11(1/4)
Lab assignments,
quizzes and 10%
participation
Final lab 20%
Final 40%
What is data?
 Data
 A collection of facts from which conclusion may be
drawn
 e.g. Data: Temperature 35°C; Conclusion: It is hot.
 Types of data
 Textual: For example, your name (Nourah)
 Numeric: For example, your ID (090254)
 Audio: For example, your voice
 Video: For example, your voice and picture
 (...)
What is data structure?
 A particular way of storing and organizing data in
a computer so that it can be used efficiently and
effectively.
 Data structure is the logical or mathematical
model of a particular organization of data.
 A group of data elements grouped together under
one name.
 For example, an array of integers
Types of data structures

Array

Linked List

Tree Queue Stack


There are many, but we named a few. We’ll learn these
data structures in details through this term!
The Need for Data Structures
 Goal: to organize data

 Criteria: to facilitate efficient


 storage of data
 retrieval of data
 manipulation of data

 Design Issue:
 select and design appropriate data types
(This is the main motivation to learn and understand data
structures)
Data Structure Operations
 Traversing
 Accessing each data element exactly once so that
certain items in the data may be processed
 Searching
 Finding the location of the data element (key) in the
structure
 Insertion
 Adding a new data element to the structure
Data Structure Operations (cont.)

 Deletion
 Removing a data element from the structure
 Sorting
 Arrange the data elements in a logical order
(ascending/descending)
 Merging
 Combining data elements from two or more data
structures into one
What is algorithm?
 A finite set of instructions which accomplish a
particular task
 A method or process to solve a problem
 Transforms input of a problem to output
 Algorithm = Input + Process + Output

 Algorithm development is an art – it needs


practice, practice and only practice!
What is a good algorithm?
 It must be correct
 It must be finite (in terms of time and size)
 It must terminate
 It must be unambiguous
 Which step is next?
 It must be space and time efficient

 A program is an instance of an algorithm, written in


some specific programming language
A simple algorithm
 Problem: Find maximum of a, b, c
 Algorithm
 Input = a, b, c
 Output = max
 Process
o Let max = a
o If b > max then
 max = b
o If c > max then
 max = c
o Display max
 Order is very important!!!
Algorithm Design: Practice
 Example 1: Determining even/odd number
 A number divisible by 2 is considered an even
number, while a number which is not divisible by 2 is
considered an odd number. Write pseudo-code to
display first N odd/even numbers.

 Example 2: Computing Weekly Wages


 Gross pay depends on the pay rate and the number of
hours worked per week. However, if you work more
than 40 hours, you get paid time-and-a-half for all
hours worked over 40. Write the pseudo-code to
compute gross pay given pay rate and hours worked
Algorithm development: Basics
 Clearly identify:
 what output is required?
 what is the input?
 What steps are required to transform input into
output
o The most crucial bit
o Needs problem solving skills
o A problem can be solved in many different ways
o Which solution, amongst the different possible
solutions is optimal?
Even/ Odd Numbers
 Input range
 for num←0; num<=range; num←num+1 do

 if num % 2 = 0 then
 print num is even
 else
 print num is odd
 endif
 endfor
Computing weekly wages
Input hours_worked, pay_rate
if hours_worked <= 40 then
gross_pay ← pay_rate x hours_worked
else
basic_pay ← pay_rate x 40
over_time ← hours_worked – 40
over_time_pay ← 1.5 x pay_rate x
over_time
gross_pay ← basic_pay + over_time_pay
endfor
print gross_pay
What is algorithm analysis?
 A methodology to predict the resources that the
algorithm requires
 Computer memory
 Computational time
 We’ll focus on computational time
 It does not mean memory is not important
 Generally, there is a trade-off between the two
factors
o Space-time trade-off is a common term
How to analyse algorithms?
 Experimental Approach
 Implement algorithms as programs and run them on
computers
 Not a good approach, though!
o Results only for a limited set of test inputs
o Difficult comparisons due to the experiment environments
(need the same computers, same operating systems, etc.)
o Full implementation and execution of an algorithm
 We need an approach which allows us to avoid
experimental study
How to analyse algorithms?
 Theoretical Approach
 General methodology for analysing the running time
o Considers all possible inputs
o Evaluates algorithms in a way that is independent from the
hardware and software environments
o Analyses an algorithm without implementing it
 Count only primitive operations used in an algorithm
 Associate each algorithm with a function f(n) that
characterises the running time of the algorithm as a function
of the input size n
o A good approximation of the total number of primitive operations
Primitive Operations
 Basic computations performed by an algorithm
 Each operation corresponding to a low-level
instruction with a constant execution time
 Largely independent from the programming language
 Examples
 Evaluating an expression (x + y)
 Assigning a value to a variable (x ←5)
 Comparing two numbers (x < y)
 Indexing into an array (A[i])
 Calling a method (mycalculator.sum())
 Returning from a method (return result)
Counting Primitive Operations
 Total number of primitive operations executed
 is the running time of an algorithms
 is a function of the input size
 Example
 Algorithm ArrayMax(A, n) # operations
 currentMax ←A[0] 2: (1 +1)
 for i←1;i<n; i←i+1 do 3n-1: (1 + n+2(n- 1))
 if A[i]>currentMax then 2(n − 1)
 currentMax ←A[i] 2(n − 1)
 endif
 endfor
 return currentMax 1
 Total: 7n − 2
Algorithm efficiency: growth rate
 An algorithm’s time requirements can be
expressed as a function of (problem) input size
 Problem size depends on the particular problem:
 For a search problem, the problem size is the
number of elements in the search space
 For a sorting problem, the problem size is the
number of elements in the given list
 How quickly the time of an algorithm grows as a
function of problem size -- this is often called an
algorithm’s growth rate
Algorithm growth rate
Which algorithm is the most efficient? [The one with
the growth rate Log N.]
Homework

1. Write an algorithm to find the


largest of a set of numbers. You do
not know the number of numbers.
2. Write an algorithm that finds the
average of (n) numbers.
For example numbers are [4,5,14,20,3,6]s

You might also like