Data Structures and
Algorithms
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 (Jose Rizal)
Numeric: For example, your ID (XYZ-0001)
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
What is data structure?
Data Structures are containers that contain objects of data
types. There are several common data structures, and each
has its own behavior and applications.
Common data structures are: arrays of one or more
dimensions, stacks, linked lists (singly and doubly linked),
queues, trees (balanced, binary, and so on), graph and
hashing.
Types of data structures
Array
Linked List
Queue Stack
Tree
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
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
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
oLet max = a
o If b > max then
max = b
o If c > max then
max = c
o Display max
Order is very important!!!
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?
How to express an algorithm?
A sequence of steps to solve a problem
We need a way to express this sequence of steps
Natural language (NL) is an obvious choice, but not a good choice.
Why?
o NLs are notoriously ambiguous (unclear)
Programming Language (PL) is another choice, but again not a good
choice. Why?
o Algorithm should be PL independent
We need some balance
o We need PL independence
o We need clarity
o Pseudo-code provides the right balance
What is Pseudo-code?
Pseudo-code is a short hand way of describing a computer
program
Rather than using the specific syntax of a computer
language, more general wording is used
It is a mixture of NL and PL expressions, in a systematic
way
Using pseudo-code, it is easier for a non-programmer to
understand the general workings of the program
Pseudo-code: General Guidelines
Use PLs construct that are consistent with modern high
level languages, e.g. C++, Java, ...
Use appropriate comments for clarity
Be simple and precise
Components of Pseudo-code
Expressions
Standard mathematical symbols are used
o Left arrow sign (←) as the assignment operator in assignment
statements (equivalent to the = operator in Java)
o Equal sign (=) as the equality relation in Boolean expressions
(equivalent to the "= =" relation in Java)
o For example
Sum ← 0
Sum ← Sum + 5
What is the final value of sum?
Components of Pseudo-code
Decision structures (if-then-else logic)
if condition then true-actions [else false-actions]
We use indentation to indicate what actions should be included in
the true-actions and false-actions
For example
if marks > 50 then
print “Congratulation, you are passed!”
else
print “Sorry, you are failed!”
end if
What will be the output if marks are equal to 75?
Components of Pseudo-code
Loops (Repetition)
Pre-condition loops
o While loops
• while condition do actions
• We use indentation to indicate what actions should be included in the loop
actions
• For example
while counter < 5 do
print “Hello World!”
counter ← counter + 1
end while
What will be the output if counter is initialized to 0, 7?
Components of Pseudo-code
Loops (Repetition)
Pre-condition loops
o For loops
• for variable-increment-definition do actions
• For example
for counter ← 0; counter < 5; counter ← counter + 2 do
print “Hello World!”
end for
What will be the output?
Components of Pseudo-code
Loops (Repetition)
Post-condition loops
o Do loops
• do actions while condition
• For example
do
print “Hello World!”
counter ← counter + 1
while counter < 5
What will be the output, if counter was initialized to 10?
The body of a post-condition loop must execute at
least once
Components of Pseudo-code
Method declarations
Return_type method_name (parameter_list) method_body
For example
integer sum ( integer num1, integer num2)
start
result ← num1 + num2
end
Method calls
object.method (args)
For example
mycalculator.sum(num1, num2)
Components of Pseudo-code
Method returns
return value
For example
integer sum ( integer num1, integer num2)
start
result ← num1 + num2
return result
end
Components of Pseudo-code
Comments
/* Multiple line comments go here. */
// Single line comments go here
Some people prefer braces {}, for comments
Arrays
A[i] represents the ith cell in the array A.
The cells of an n-celled array A are indexed from A[0] to
A[n − 1] (consistent with Java).