Intro To Data Structure and Algorithms
Intro To Data Structure and Algorithms
and Algorithms
CC104 – Data Structure and Algorithms
Judielyn Cualbar
Source: TutorialPoints
Data Structures are the programmatic way of storing data so that
data can be used efficiently. Almost every enterprise application
uses various types of data structures in one or the other way.
Why to Learn Data Structure and Algorithms?
Data Structure
As applications are getting complex and data rich, there are three
common problems that applications face now-a-days.
Data Search − Consider an inventory of 1 million(106) items of a
store. If the application is to search an item, it has to search an
item in 1 million(106) items every time slowing down the search. As
data grows, search will become slower.
Processor speed − Processor speed although being very high, falls
limited if the data grows to billion records.
Multiple requests − As thousands of users can search data
simultaneously on a web server, even the fast server fails while
searching the data.
Algorithm is a step-by-step procedure, which defines a set of
instructions to be executed in a certain order to get the desired
output. Algorithms are generally created independent of
underlying languages, i.e. an algorithm can be implemented in
more than one programming language.
Applications of From the data structure point of view, following are some
Data Structure important categories of algorithms −
Search − Algorithm to search an item in a data structure.
and
Sort − Algorithm to sort items in a certain order.
Algorithms Insert − Algorithm to insert item in a data structure.
Update − Algorithm to update an existing item in a data structure.
Delete − Algorithm to delete an existing item from a data
structure.
The following
computer Fibonacci number series
Knapsack problem
problems can Tower of Hanoi
be solved All pair shortest path by Floyd-Warshall
using Data Shortest path by Dijkstra
Structures Project scheduling
Data Structure is a
systematic way to
organize data in Interface − Each data structure has an interface. Interface
represents the set of operations that a data structure supports. An
order to use it interface only provides the list of supported operations, type of
efficiently. parameters they can accept and return type of these operations.
Following terms Implementation − Implementation provides the internal
representation of a data structure. Implementation also provides
are the foundation the definition of the algorithms used in the operations of the data
terms of a data structure.
structure.
Correctness − Data structure implementation should implement
Characteristics its interface correctly.
Time Complexity − Running time or the execution time of
of a Data operations of data structure must be as small as possible.
Structure Space Complexity − Memory usage of a data structure operation
should be as little as possible.
As applications are getting complex and data rich, there are three
common problems that applications face now-a-days.
Data Search − Consider an inventory of 1 million(106) items of a
store. If the application is to search an item, it has to search an
item in 1 million(106) items every time slowing down the search. As
data grows, search will become slower.
Need for Data Processor speed − Processor speed although being very high, falls
limited if the data grows to billion records.
Structure Multiple requests − As thousands of users can search data
simultaneously on a web server, even the fast server fails while
searching the data.
To solve the above-mentioned problems, data structures come to
rescue. Data can be organized in a data structure in such a way
that all items may not be required to be searched, and the
required data can be searched almost instantly.
There are three cases which are usually used to compare various
data structure's execution time in a relative manner.
Worst Case − This is the scenario where a particular data structure
operation takes maximum time it can take. If an operation's worst
case time is ƒ(n) then this operation will not take more than ƒ(n)
time where ƒ(n) represents function of n.
Big Oh
Notation, Ο
Omega
Notation, Ω
Theta
Notation, θ
θ(f(n)) = { g(n) if and only if g(n) = Ο(f(n)) and g(n) = Ω(f(n)) for all
n > n0. }
Following is a list of some common asymptotic notations −
constant − Ο(1)
logarithmic − Ο(log n)
linear − Ο(n)
polynomial − nΟ(1)
exponential − 2Ο(n)
In divide and conquer approach, the problem in hand, is divided
into smaller sub-problems and then each problem is solved
independently. When we keep on dividing the subproblems into
even smaller sub-problems, we may eventually reach a stage
where no more division is possible. Those "atomic" smallest
possible sub-problem (fractions) are solved. The solution of all
sub-problems is finally merged in order to obtain the solution of
an original problem.
Divide and
Conquer
Divide/Break
This step involves breaking the problem into smaller sub-problems.
Broadly, we Sub-problems should represent a part of the original problem. This
step generally takes a recursive approach to divide the problem until
can no sub-problem is further divisible. At this stage, sub-problems
become atomic in nature but still represent some part of the actual
understand div problem.
ide-and- Conquer/Solve