1. Thinking in Data Structures
Tushar B Kute
http://www.tusharkute.com
2. Data Structure
●
What is the "Data Structure" ?
–
–
●
Ways to represent data.
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.
Why data structure ?
–
–
Have proven correct algorithms
–
●
To design and implement large-scale computer system
The art of programming
How to master in data structure ?
–
practice, discuss, and think
www.tusharkute.com
2
3. Need of data structures
●
Data structures organize data
–
●
More powerful computers
–
●
●
More efficient programs.
More complex applications.
More complex applications demand more calculations.
Complex computing tasks are unlike our everyday
experience.
www.tusharkute.com
3
4. List of data structures
●
Static
–
–
Stack
–
●
Array
Queue
Dynamic
–
Linked list
–
Tree
–
Graph
www.tusharkute.com
4
5. Choosing a data structure
int p[10], i=0;
int *p, i=0;
while(1)
while(1)
{
{
scanf(“%d”, &p[i]);
i++;
}
scanf(“%d”, &p[i]);
i++;
}
www.tusharkute.com
5
7. System life cycle
●
Design
–
●
Refinement and Coding
–
●
Create abstract data types and the algorithm
specifications, language independent.
Determining data structures and algorithms.
Verification
–
Developing correctness proofs, testing the program,
and removing errors.
www.tusharkute.com
7
8. 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.
www.tusharkute.com
8
9. 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.
www.tusharkute.com
9
10. Data structure philosophy
●
●
●
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
www.tusharkute.com
10
13. Example: check for prime number
flag=0;
for(a=2;a<num;a++)
{
if(num%a==0)
flag=1;
}
if(flag==1)
printf(“Number is not prime.”);
else
printf(“Number is prime.”);
www.tusharkute.com
13
19. Way-3
a=13, b=29;
a = a ^ b;
b = a ^ b;
a = a ^ b;
or
a^=b^=a^=b;
www.tusharkute.com
19
20. Worst / Average / Best case
●
Worst-case running time of an algorithm
–
The longest running time for any input of size n
–
An upper bound on the running time for any input
–
Guarantee that the algorithm will never take longer
Example: Sort a set of numbers in increasing order; and the data is in
decreasing order
–
The worst case can occur fairly often
–
E.g. in searching a database for a particular piece of information
●
●
Best-case running time
–
●
Sort a set of numbers in increasing order; and the data is already in
increasing order
Average-case running time
–
May be difficult to define what “average” means
www.tusharkute.com
20
21. Example: searching in database
●
Best case: O(1)
●
Worst case: O(n)
●
Average case: O(n/2)
www.tusharkute.com
21
22. Running time of algorithms
●
Bounds are for the algorithms, rather than programs
–
●
Programs are just implementations of an algorithm,
and almost always the details of the program do not
affect the bounds
Bounds are for algorithms, rather than problems
–
A problem can be solved with several algorithms,
some are more efficient than others
www.tusharkute.com
22
23. Describing algorithms
●
Natural language
–
–
●
English, Chinese
Instructions must be definite and effectiveness.
Graphic representation
–
Flowchart
Work well only if the algorithm is small and simple.
Pseudo language
●
●
–
Readable
Instructions must be definite and effectiveness.
Combining English and C
●
●
–
Simple and Tough task to do.
www.tusharkute.com
23
24. Algorithm and programs
●
Algorithm: a method or a process followed to solve a
problem.
–
●
An algorithm takes the input to a problem (function) and
transforms it to the output.
–
●
A recipe: The algorithm gives us a “recipe” for solving
the problem by performing a series of steps, where
each step is completely understood.
A mapping of input to output.
A problem can be solved by many algorithms.
www.tusharkute.com
24
25. A problem can have many solutions
●
For example, the problem of sorting can be solved by the
following algorithms:
–
Insertion sort
–
Bubble sort
–
Selection sort
–
Shell sort
–
Merge sort
–
Radix sort
–
Merge sort
–
Quick sort
www.tusharkute.com
25
26. Algorithm properties
●
An algorithm possesses the following properties:
–
–
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 be correct.
It must terminate.
A computer program is an instance, or concrete
representation, for an algorithm in some programming
language.
www.tusharkute.com
26