Class 1 Introduction To Datastructure
Class 1 Introduction To Datastructure
CHAPTER 1 2
How to create programs
Requirements
Analysis: bottom-up vs. top-down
Design: data objects and operations
Refinement and Coding
Verification
– Program Proving
– Testing
– Debugging
CHAPTER 1 3
Algorithm
Definition
An algorithm is a finite set of instructions that
accomplishes a particular task.
Criteria
– input
– output
– definiteness: clear and unambiguous
– finiteness: terminate after a finite number of steps
– effectiveness: instruction is basic enough to be carried
out
CHAPTER 1 4
Data Structures -> Data StructurING
How do we organize information so that we can find,
update, add, and delete portions of it efficiently?
Data Structure Example Applications
CHAPTER 1 5
Data Type
Data Type
A data type is a collection of objects and a set of
operations that act on those objects.
Abstract Data Type
An abstract data type(ADT) is a data type that is
organized in such a way that the specification of
the objects and the operations on the objects is
separated from the representation of the objects
and the implementation of the operations.
CHAPTER 1 6
Specification vs. Implementation
Operation specification
– function name
– the types of arguments
– the type of the results
Implementation independent
CHAPTER 1 7
*Structure 1.1:Abstract data type Natural_Number (p.17)
structure Natural_Number is
objects: an ordered subrange of the integers starting at zero and ending
at the maximum integer (INT_MAX) on the computer
functions:
for all x, y Nat_Number; TRUE, FALSE Boolean
and where +, -, <, and == are the usual integer operations.
Nat_No Zero ( ) ::= 0
Boolean Is_Zero(x) ::= if (x) return FALSE
else return TRUE
Nat_No Add(x, y) ::= if ((x+y) <= INT_MAX) return x+y
else return INT_MAX
Boolean Equal(x,y) ::= if (x== y) return TRUE
else return FALSE
Nat_No Successor(x) ::= if (x == INT_MAX) return x
else return x+1
Nat_No Subtract(x,y) ::= if (x<y) return 0
else return x-y
end Natural_Number ::= is defined as
CHAPTER 1 8
Measurements
Criteria
– Is it correct?
– Is it readable?
– …
Performance Analysis (machine independent)
– space complexity: storage requirement
– time complexity: computing time
Performance Measurement (machine dependent)
CHAPTER 1 9
Space Complexity
S(P)=C+SP(I)
Fixed Space Requirements (C)
Independent of the characteristics of the inputs
and outputs
– instruction space
– space for simple variables, fixed-size structured
variable, constants
Variable Space Requirements (SP(I))
depend on the instance characteristic I
– number, size, values of inputs and outputs associated
with I
– recursive stack space, formal parameters, local
variables, return address
CHAPTER 1 10
*Program 1.9: Simple arithmetic function (p.19)
float abc(float a, float b, float c)
{
return a + b + b * c + (a + b - c) / (a + b) + 4.00;
}
Sabc(I) = 0
Assumptions:
*Figure 1.1: Space needed for one recursive call of Program 1.11 (p.21)
CHAPTER 1 12
Time Complexity
T(P)=C+TP(I)
Compile time (C)
independent of instance characteristics
run (execution) time TP
Definition TP(n)=caADD(n)+csSUB(n)+clLDA(n)+cstSTA(n)
A program step is a syntactically or semantically
meaningful program segment whose execution
time is independent of the instance characteristics.
Example
– abc = a + b + b * c + (a + b - c) / (a + b) + 4.0
– abc = a + b + c Regard as the same unit
machine independent
CHAPTER 1 13
Methods to compute the step count
CHAPTER 1 14
Iterative summing of a list of numbers
*Program 1.12: Program 1.10 with count statements (p.23)
CHAPTER 1 16
Recursive summing of a list of numbers
*Program 1.14: Program 1.11 with count statements added (p.24)
CHAPTER 1 17
Matrix addition
CHAPTER 1 18
*Program 1.16: Matrix addition with count statements (p.25)
CHAPTER 1 21
Recursive Function to sum of a list of numbers
*Figure 1.3: Step count table for recursive summing function (p.27)
CHAPTER 1 22
Matrix Addition
*Figure 1.4: Step count table for matrix addition (p.27)
CHAPTER 1 23
Exercise 1
CHAPTER 1 24
Exercise 2
CHAPTER 1 25
Exercise 3
*Program 1.20:Matrix product function(p.29)
CHAPTER 1 26
Exercise 4
CHAPTER 1 27
Asymptotic Notation (O)
Definition
f(n) = O(g(n)) iff there exist positive constants c
and n0 such that f(n) cg(n) for all n, n n0.
Examples
– 3n+2=O(n) /* 3n+24n for n2 */
– 3n+3=O(n) /* 3n+34n for n3 */
– 100n+6=O(n) /* 100n+6101n for n10 */
– 10n2+4n+2=O(n2) /* 10n2+4n+211n2 for n5 */
– 6*2n+n2=O(2n) /* 6*2n+n2 7*2n for n4 */
CHAPTER 1 28
O(1): constant
O(n): linear
O(n2): quadratic
O(n3): cubic
O(2n): exponential
O(logn)
O(nlogn)
CHAPTER 1 29
*Figure 1.7:Function values (p.38)
CHAPTER 1 30
*Figure 1.8:Plot of function values(p.39)
nlogn
logn
CHAPTER 1 31
*Figure 1.9:Times on a 1 billion instruction per second computer(p.40)
CHAPTER 1 32