Noida Institute of Engineering and Technology, Greater
Noida
Introduction to Algorithm
and Asymptotic Notations
Unit: 1
Design & Analysis of Algorithms
Dr. Amba Mishra
ACSE0401
Associate Professor
IT
CSE 5TH SEM
Dr. Amba Mishra ACSE0501 DAA Unit I
1
12/24/2024
Evaluation Scheme
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 2
Syllabus
Dr. Amba Mishra ACSE0501 DAA Unit I
12/24/2024 3
Branch wise Application
• First, we will start with the internet which is very much important for our daily life and we cannot
even imagine our life without the internet and it is the outcome of clever and creative algorithms.
Numerous sites on the internet can operate and falsify this huge number of data only with the help of
these algorithms.
• The everyday electronic commerce activities are massively subject to our data, for example, credit or
debit card numbers, passwords, OTPs, and many more. The centre technologies used incorporate
public-key cryptocurrency and digital signatures which depend on mathematical algorithms.
• Even an application that doesn't need algorithm content at the application level depends vigorously on
the algorithm as the application relies upon hardware, GUI, networking, or object direction and all of
these create a substantial use of algorithms.
• There are some other vital use cases where the algorithm has been used such as if we watch any video
on YouTube then next time we will get related-type advice as recommended videos for us.
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 4
Course Objective
Upon completion of this course, students will be able to do the following:
• Knowledge of basic principles of algorithm design and anlysis
• To Apply different problem solving approaches for advanced data
structure.
• To apply divide and conquer method for solving merge sort , quick sort,
matrix multiplication and Greedy Algorithm for solving different Graph
Problem.
• Apply different optimization techniques like dynamic programming ,
backtracking and Branch & Bound to solve the complex problem.
• Synthesize efficient algorithms in common engineering design
situations.
Dr. Amba Mishra ACSE0501 DAA Unit I
12/24/2024 5
CO-PO and PSO Mapping
Design and Analysis of Algorithm (ACSE-0401)
CO.K PO1 PO2 PO3 PO4 PO5 PO6 PO7 PO8 PO9 PO10 PO11 PO12
ACSE0401.1 3 3 3 3 2 2 1 - 1 - 2 2
ACSE0401.2 3 3 3 3 2 2 1 - 1 1 2 2
ACSE0401.3 3 3 3 3 3 2 2 - 2 1 2 3
ACSE0401.4 3 3 3 3 3 2 2 1 2 1 2 3
ACSE0401.5 3 3 3 3 3 2 2 1 2 1 2 2
Average 3 3 3 3 2.6 2 1.6 0.4 1.6 0.8 2 2.2
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 6
Program Educational Objectives(PEOs)
PEO1: To have an excellent scientific and engineering breadth so as to
comprehend, analyze, design and provide sustainable solutions for
real-life problems using state-of-the-art technologies.
PEO2:To have a successful career in industries, to pursue higher studies or
to support enterpreneurial endeavors and to face global challenges.
PEO3:To have an effective communication skills, professional attitude,
ethical values and a desire to learn specific knowledge in emerging
trends, technologies for research, innovation and product
development and contribution to society.
PEO4: To have life-long learning for up-skilling and re-skilling for
successful professional career as engineer, scientist, enterpreneur
and bureaucrat for betterment of society
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 7
End Semester Question Paper Template
B TECH
(SEM-V) THEORY EXAMINATION 20__-20__
DESIGN AND ANALYSIS OF ALGORITHMS
Time: 3 Hours Total
Marks: 100
Note: 1. Attempt all Sections. If require any missing data; then choose
suitably.
SECTION A
1.Q.No.
Attempt all questions in brief.
Question Marks 2 xCO10 =
20
1 2
2 2
. .
10 2
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 8
End Semester Question Paper Templates
SECTION B
2. Attempt any three of the following: 3 x 10 = 30
Q.No. Question Mark CO
s
1 10
2 10
. .
5 SECTION C 10
3. Attempt any one part of the following: 1 x 10 = 10
Q.No. Question Marks CO
1 10
2 10
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 9
End Semester Question Paper Templates
4. Attempt any one part of the following: 1 x 10 = 10
Q.No. Question Marks CO
1 10
2 10
5. Attempt any one part of the following: 1 x 10 = 10
Q.No. Question Marks CO
1 10
2 10
6. Attempt any one part of the following: 1 x 10 = 10
Q.No. Question Mark CO
s
1 10
2 10
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 10
Prerequisite and Recap
Prerequisite
• Basic concept of python programming language.
• Concept of stack, queue and link list.
Recap
• Flow Chart
• Algorithm
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 11
Introduction About Subject With Videos
• The word Algorithm means “a process or set of rules to be followed in calculations
or other problem-solving operations”. Therefore Algorithm refers to a set of
rules/instructions that step-by-step define how a work is to be executed upon in
order to get the expected results.
• https://youtu.be/6hfOvs8pY1k
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 12
Unit Content
• Introduction to Algorithm
• Characteristics of Algorithm
.
• Analysis of Algorithm
• Asymptotic Notations
• Recurrence Relation
• Sorting and order Statistics
• Shell sort,
• Heap sort,
• Sorting in linear time
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 13
Unit Objective
.
• This is an introductory chapter of Design & Analysis of Algorithm
covering the concept, importance and characteristics of algorithms. The
complexity and its calculation has been explained. Further, recursion and
different methodologies to solve them have also been provided.
• In other part of unit different sorting algorithm – Insertion, Heap sort,
Quick sort, bucket sort, Radix Sort and Counting sort have been discussed
along with their complexities
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 14
Topic Objective
• The objective of this topic is to make students understand
about
• Need of algorithm
• Problem statement
• Why study algorithm
• Characteristics of Algorithm
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 15
Introduction to the Algorithm(CO1)
• an algorithm is any well-defined computational procedure that takes
some value, or set of values, as input and produces some value, or set of
values, as output in a finite amount of time.
Set of rules to
obtain the
expected output
INPUT from given OUTPUT
input
Algorithm
• An algorithm is thus a sequence of computational steps that transform
the input into the output.
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 16
Why Algorithm is Important ?
• Algorithm allow students to break down problems and conceptualize
solutions in terms of discrete steps (Expanded form).
• Algorithm are used to find best possible way to solve a problem .
• They help to automate processes and make them more reliable,
faster, and easier to perform.
• Algorithms also enable computers to perform tasks that would be
difficult or impossible for humans to do manually.
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 17
Characteristics of Algorithm
• Correctness
• Efficiency
• Simplicity
• Generality
• Non Ambiguity
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 18
Criteria of Algorithm
All algorithms must satisfy following criteria-:
– Input
– Output
– Definiteness
– Finiteness
– Effectiveness
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 19
Algorithm
• An algorithm is a set of steps of operations to solve a problem.
• An algorithm is an efficient method that can be expressed within
finite amount of time and space.
• Algorithm is independent from any programming languages.
• Algorithm design include creating an efficient algorithm to solve a
problem in an efficient way using minimum time and space.
• Time is directly proportional to the number of operations on a
program.
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 20
Difference between Algorithm , Pseudocode & Program
• Algorithm :Systematic logical approach to solve any problem.It can
be written in natural language.
• Pseudocode : It is simple version of programming code that does
not require any strict programming language syntax.
• Program : it is exact code written in any particular programming
language
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 21
Difference between Algorithm , Pseudocode & Program
example : Linear Search
Algorithm- 1. Start from left elemnt of arr[] and one by one compare X with
each element of arr[].
2. if X match , return index of element .
3. else return -1.
Pseudocode –
Function Lsearch(list,X)
for index 0 to length(list)
if list[index]==X then
return index
END If
END LOOP
return -1
END Function
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 22
Analysis of Algorithm(CO1)- Objective
The objective of this topic is to make students understand about
• Space Complexity
• Time Complexity
• Best Case
• Worst Case
• Average Case
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 23
Analysis of Algorithm(CO1)- Objective
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 24
Analysis of Algorithm(CO1)
How to measure time
Count total number of fundamental operation in program and this
total will give the rough estimate of the running time in terms of
input size.
• Best Case
The minimum number of steps taken on any instance of size n.
• Average Case
An average number of steps taken on any instance of size n.
• Worst Case
The maximum number
12/24/2024
of steps taken
Dr. Amba Mishra
on any instance
ACSE0501 DAA Unit I
of size n.25
Running time for Algorithm
Algorithm Cost No. of times
Sum(A,n)
{
s =0 C1 1
for i=1 to n do C2 n+1
s = s+A[i] C3 n
return s C4 1
}
Total Running Time = c1 + c2(n+1)+c3(n) + c4
T(n) = Linear function
12/24/2024 Dr. Amba Mishra ACSE0501 DA 26
A Unit I
Running time for Algorithm
Algorithm Cost No. of times
For each row i from 1 to rows(A): c1 rows(A)+1
rows(A)*(columns(A)+1)
For each column j from 1 to columns(A): c2
C[i][j] = A[i][j] + B[i][j] c3 rows(A) * columns(A)
12/24/2024 Dr. Amba Mishra ACSE0501 DA 27
A Unit I
Running time for Algorithm
Algorithm Cost No. of times
DAA(n)
{
while(n>1) log2(n)+1
C1
{
n=n/2 C2 log2(n)
print(n)
} c3 log2(n)
}
12/24/2024 Dr. Amba Mishra ACSE0501 DA 28
A Unit I
Analysis of Algorithm(CO1)
Let’s take an example to understand this better –
This is Constant Time Complexity.
The above statement is only printed one time. Thus the time taken by
the algorithm is constant.
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 29
Analysis of Algorithm(CO1)
This is Linear Time Complexity
In the above code, the size of the input is taken as 5, thus the algorithm
is executed 5 times.
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 30
Analysis of Algorithm(CO1)
• The time taken by the algorithm will not be constant as the above
code contains a ‘for loop’.
• From this, we can conclude that if the statement of an algorithm
has only been executed once, the time taken will always remain
constant.
• If the statement is in a for loop, the time taken by an algorithm to
execute the statement increases as the size of the input increases.
• If the algorithm contains nested loops or a combination of both “ a
single executed statement and a loop statement” , the time is taken
by the algorithm will increase according to the number of times
each statement is executed
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 31
Analysis of Algorithm(CO1)
This is Quadratic Time Complexity
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 32
Analysis of Algorithm(CO1)
– The term "analysis of algorithms" was coined by Donald Knuth.
– To estimate the complexity function for arbitrarily large input.
– Analysis of algorithms is the determination of the amount of time
and space resources required to execute it.
– The efficiency or running time of an algorithm is stated as a function
relating the input length to the number of steps, known as time
complexity, or volume of memory, known as space complexity.
– The main concern of analysis of algorithms is the required time or
performance
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 33
Complexity of Algorithm(CO1)
Time Complexity : RULES FOR EXAMPLES
1.SINGLE STATEMENT
c = a+b
Total Time complexity= O (1)
2. LOOP
For i 1 to n
s s+ a[i]
Total Time complexity =O(n)
3.Nested Loop
for i 1 to m
for j 1 to m
s s +a [i]
Total Time complexity =O(m2)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 34
Complexity of Algorithm(CO1)
4. Consecutive Statement = P1 ,P2 //Consider previous 2 statements p1 and
p2 //
Total Time Complexity = O(n2)
5.If else Total Time Complexity = O(n2)
6. While loop
while (n > 0)
{ i i+1 ;
n n/2;
} Total Time Complexity = O(log n )
###RECURSION :fact(n)
if(n<=1)
return 1
else
return n*fact(n-1)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 35
Asymptotic Notations(CO1)- Objective
The objective of this topic is to make students understand about
• Five Asymptotic notations
Big Theta Notation
Big Oh Notation
Big Omega Notation
Small Oh Notation
Small Omega Notation
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 36
Asymptotic Notations(CO1)- Objective
• Asymptotic notation are mathematical tools to represent time
complexity of algorithm for asymptotic analysis.
• The main idea of asymptotic analysis is to have a measure of
efficiency of algorithms that doesn’t depend on machine specific
constants and doesn’t require algorithms to be implemented and
time taken by programs to be compare d.
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 37
Asymptotic Notations (CO1)
The asymptotic running time of an algorithm are defined in terms of
functions whose domains are the set of natural numbers. The
following are the types of asymptotic notation
Theta Notation
Big Oh Notation
Big Omega Notation
Small Oh Notation
Small Omega Notation
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 38
Big Oh Notation
The function f(n) = O(g(n)) (read as “ f of n is big oh of g of n”) if there
exist positive constants c and n0 such that
f(n)≤cg(n) for all n≥ n0
t
i
m
e
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 39
Big Oh Notation
Example
Let us consider a given function,
f(n)=2n2 + n
Considering g(n)=n2 //at most
f(n)⩽3.g(n)
n ⩽ n2 for all the values of n>=1.
(you can prove that after n_o value of f(n) does not fluctuate
by putting value of n 1 or greater )
Hence, the complexity of f(n) can be represented as
12/24/2024 Dr. Amba Mishra
O(g(n)), i.e. O(n2)Unit I
ACSE0501 DAA 40
Big Omega Notation
The function f(n) = Ω(g(n)) (read as “ f of n is Ω of g of n”) if there
exist positive constants c and n0 such that
cg(n)≤ f(n) for all n≥ n0
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 41
Big Omega Notation
Example
Let us consider a given function,
f(n)=2n2 + n
Considering g(n)=n2 //greatest lower bound we choose
(choose value of c carefully and we have to choose closest
value )
f(n)>=2.g(n)
for all the values of n>=0 this condition will be true.
Hence, the complexity of f(n) can be represented as
Ω (g(n)), i.e. Ω(n2)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 42
Theta Notation
We use ‚Θ notation for asymptotically tight bounds
The function f(n) = Θ(g(n)) (read as “ f of n is theta of g of n”) if there
exist positive constants c1 and c2 and n0 such that
c1g(n)≤f(n)≤c2g(n) for all n≥ n0
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 43
Theta Notation
Example
Let us consider a given function,
f(n)=2n2 + n
Considering g(n)=n2,
2.g(n)⩽f(n)⩽3.g(n) for all the large values of n.
Hence, the complexity of f(n) can be represented as
θ(g(n)), i.e. θ(n2)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 44
Small Oh Notation
• The asymptotic upper bound big oh provided by O-notation may
or may not be asymptotically tight.
• We use o-notation to denote an upper bound that is not
asymptotically tight.
f(n) = o(g(n)) if f(n)< c(g(n)) for all n≥ n0 and c>0
• f(n) becomes insignificant relative to g(n) as n approaches infinity:
lim [f(n) / g(n)] = 0
n
• g(n) is an upper bound for f(n) that is not asymptotically tight.
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 45
Small Oh Notation
Example
Let us consider a given function,
f(n)=4.n3+10.n2+5.n+1
Considering g(n)=n4; // g(n) can’t be equal to f(n) , can only
be greater
lim (4.n3+10.n2+5.n+1/ n4 )=0
n→∞
Hence, the complexity of f(n) can be represented as
o(g(n)), i.e. o(n4)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 46
Small Omega Notation
• lower bound that is not asymptotically tight
f(n) = ω(g(n)) if c(g(n))< f(n) for all n≥ n0
• f(n) becomes arbitrarily large relative to g(n) as n approaches
infinity:
lim [f(n) / g(n)] = .
n
• g(n) is a lower bound for f(n) that is not asymptotically tight.
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 47
Small Omega Notation
Example
Let us consider a given function,
f(n)=4.n3+10.n2+5.n+1
Considering g(n)=n2, // g(n) can’t be equal to f(n) , can only
be smaller than f(n)
lim (4.n3+10.n2+5.n+1/ n2 )=0
n→∞
Hence, the complexity of f(n) can be represented as
ω (g(n)), i.e. ω(n4)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 48
Algorithm Time Complexity
Time
Complexity
Comparison
Dr. Amba Mishra ACSE0501 DAA Unit I 12/24/2024 49
Amortized analysis
• Amortized analysis is a method of analyzing algorithms that can
help us determine an upper bound on the complexity of an
algorithm.
• This is particular useful when analyzing operations on data
structures, when they they involve slow, rarely occurring
operations and fast, more common operations.
• With this disparity between each operations’ complexity, it is
difficult to get a tight bound on the overall complexity of a
sequence of operations using worst-case analysis.
• Amortized analysis provides us with a way of averaging the slow
and fast operations together to obtain a tight upper bound on the
overall algorithm runtime.
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 50
Amortized analysis
• In simple terms we can say , In Amortized Analysis, we analyze a
sequence of operations and guarantee a worst-case average time
that is lower than the worst-case time of a particularly
expensive operation.
• The idea is to spread the cost of these expensive operations over
multiple operations, so that the average cost of each operation is
constant or less.
• The key idea behind amortized analysis is to spread the cost of
an expensive operation over several operations. For example,
consider a dynamic array data structure that is resized when it runs
out of space. The cost of resizing the array is expensive, but it can
be amortized over several insertions into the array, so that the
average time complexity of an insertion operation is constant.
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 51
Amortized analysis
• Amortized analysis is useful for designing efficient algorithms for
data structures such as dynamic arrays, priority queues, and
disjoint-set data structures.
• It provides a guarantee that the average-case , time complexity of
an operation is constant, even if some operations may be expensive.
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 52
Amortized analysis
• Amortized Cost in Dynamic Array:
1.Cheap Operations (adding elements): Most of the
time, adding an element is a simple and quick
operation, costing, let's say, 1 coin.
2.Expensive Operation (resizing): Occasionally, when
the array is full, we need to resize it, which may cost
more, say, 5 coins.
• Now, if you look at a sequence of, let's say, 10
operations, and only once you had to resize, the total
cost might be something like 10 (cheap) + 5
(expensive) = 15 coins.
• The amortized cost per operation would then be 15
/ 11 = 1.36 coins on average.
12/24/2024 Dr. Amba Mishra ACSE0501 DA 53
A Unit I
Recursion (CO1)
• The process in which a function calls itself directly or indirectly is called
recursion and the corresponding function is called as recursive function.
• Using recursive algorithm, certain problems can be solved quite easily.
• Examples of such problems are Towers of Hanoi (TOH), Inorder/
Preorder/Postorder Tree Traversals, DFS of Graph, etc.
• The running time of recursive algorithms is represented by an equation
that describes a function in terms of its value on smaller functions. For
eg.
C n=1
T(n) = {
2T(n/2) +cn n>1
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 54
Methods of solving Recurrences
A recurrence is an equation or inequality that describes a function in
terms of its values on smaller inputs. To solve a Recurrence Relation
means to obtain a function defined on the natural numbers that satisfy
the recurrence.
For Example, the Worst Case Running Time T(n) of the MERGE SORT
Procedures is described by the recurrence.
There are four methods for solving Recurrence:
Substitution Method
Iteration Method
Recursion Tree Method
Master Method
Reference video :
https://www.youtube.com/watch?v=HhT1VueqQTo
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 55
Master Method
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 56
Master Method
Questions done in class
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 57
Master Method
Master method
• Master Method is a direct way to get the solution.
• The master method applies to recurrences of the form
T(n) = a T(n/b) + f (n) ,
where a ³ 1, b > 1, and f is asymptotically positive.
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 58
Master Method Example Questions
• There are three cases:
• Case I f (n) = O(nlogba – e) for some constant e > 0.
f (n) grows polynomially slower than nlogba (by an ne factor).
Solution: T(n) = Q(nlogba)
Example
. T(n) = 4T(n/2) + n
Here a = 4, b = 2 nlogba = n2; f (n) = n.
CASE 1: f (n) = O(n2 – e) for e = 1.
T(n) = Q(n2).
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 59
Master Method
• Case II f (n) = Q(nlogba lgkn) for some constant k ³ 0.
f (n) and nlogba grow at similar rates.
Solution: T(n) = Q(nlogba lgk+1n) .
Example
T(n) = 4T(n/2) + n2
Here a = 4, b = 2 nlogba = n2; f (n) = n2.
CASE 2: f (n) = Q(n2lg0n), that is, k = 0.
T(n) = Q(n2lg n).
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 60
Master Method
Case III f (n) = W(nlogba + e) for some constant e > 0.
f (n) grows polynomials faster than nlogba (by an ne factor),
and f (n) satisfies the regularity condition that a f (n/b) £ c f (n)
for some constant c < 1.
Solution: T(n) = Q( f (n) ) .
Example
T(n) = 4T(n/2) + n3
a = 4, b = 2 nlogba = n2; f (n) = n3.
CASE 3: f (n) = W(n2 + e) for e = 1 and 4(cn/2)3 £ cn3 for c =
1/2.
T(n) = Q(n3).
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 61
12/24/2024 Dr. Amba Mishra ACSE0501 DA 62
A Unit I
12/24/2024 Dr. Amba Mishra ACSE0501 DA 63
A Unit I
Master theorem
12/24/2024 Dr. Amba Mishra ACSE0501 DA 64
A Unit I
Example of Master Method
Examples of some standard algorithms whose time complexity
can be evaluated using Master Method
Merge Sort: T(n) = 2T(n/2) + Θ(n). It falls in case 2 as c is 1 and Log ba]
is also 1. So the solution is Θ(n Logn)
Binary Search: T(n) = T(n/2) + Θ(1). It also falls in case 2 as c is 0 and
Logba is also 0. So the solution is Θ(Logn)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 65
Questions done in class
Dr. Amba Mishra ACSE0501 DAA Unit
12/24/2024 66
I
Substitution Method
12/24/2024 Dr. Amba Mishra ACSE0501 DA 67
A Unit I
Substitution Method
12/24/2024 Dr. Amba Mishra ACSE0501 DA 68
A Unit I
Substitution Method
12/24/2024 Dr. Amba Mishra ACSE0501 DA 69
A Unit I
Substitution Method
12/24/2024 Dr. Amba Mishra ACSE0501 DA 70
A Unit I
Substitution Method
12/24/2024 Dr. Amba Mishra ACSE0501 DA 71
A Unit I
Substitution Method
12/24/2024 Dr. Amba Mishra ACSE0501 DA 72
A Unit I
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 73
Question 1: T(n) = 2T(n/2) + c
Solution :
Step 1: Draw a recursive tree
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 74
• Step 2: Calculate the work done or cost at each level and count total no of
levels in recursion tree
• Count the total number of levels –
Choose the longest path from root node to leaf node.
n/20 → n/21 → n/22 → ………→ n/2k
12/24/2024 Dr. Amba Mishra ACSE0501 DA 75
A Unit I
• Size of problem at last level = n/2k
• At last level size of problem becomes 1
n/2k = 1
2k = n
k = log2(n)
Total no of levels in recursive tree = k +1 = log 2(n) + 1
Step 3: Count total number of nodes in the last level and calculate cost of last
level
• No. of nodes at level 0 = 20 = 1
• No. of nodes at level 1 = 21 = 2
• No. of nodes at level log2(n) = 2log2(n) = nlog2(2) = n
• Cost of sub problems at level log2(n) (last level) = n * T(1) =n* 1=n
12/24/2024 Dr. Amba Mishra ACSE0501 DA 76
A Unit I
Step 4: Sum up the cost all the levels in recursive tree
• T(n) = c + 2c + 4c + —- + (no. of levels-1) times + last level cost
• = c + 2c + 4c + —- + log2(n) times + Θ(n)
• = c(1 + 2 + 4 + —- + log2(n) times) + Θ(n)
• 1 + 2 + 4 + —– + log2(n) times –> 20 + 21 + 22 + —– + log2(n) times –>
Geometric Progression(G.P.)
• = c(n) + Θ(n)
Thus, T(n) = Θ(n)
12/24/2024 Dr. Amba Mishra ACSE0501 DA 77
A Unit I
12/24/2024 Dr. Amba Mishra ACSE0501 DA 78
A Unit I
12/24/2024 Dr. Amba Mishra ACSE0501 DA 79
A Unit I
Iteration Method
T(N) = T(N-1) + 1, T(1) = 1
Solution:
Here T(N) = T(N-1) + 1-----------eq.1
first find value of T(N-1) = T(N-2) + 1.
Place T(N-1) in eq.1
T(N) = (T(N-2) + 1 ) + 1
T(N) = T(N-2) + 2----------------eq. 2
Now find T(N-2) and place in eq.2
T(N) = T(N-3) + 3
……………………..
……………………..
From the above pattern, we get T(N) = T(N- (N-1)) + (N-1)
Thus T(N) = T(1) + (N-1) and since T(1)=1, so we place value of T(1)
Thus we get , T(N)=O(N) .
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 80
Practice Questions :
1. Find the time complexity for the following recurrence relation using
Iteration Method
• T(n) = T(n-1) + n, T(1) = 1
2. Using the recurrence for the binary search given below, find the time
complexity of binary search:
• T(n) = T(n/2) + 1 , T(1) = 1
3. Find an Asymptotic bound on T, using Substitution Method.
• T(n)= 2T(n/2) + n , n>1
4. Consider the recurrence relation: T(n) = T(n/3) + T(2n/3) + n , solve
using Recursion tree method.
5. Solve the following recurrence relation using Master’s theorem-
• T(n) = 3T(n/2) + n2
12/24/2024 Dr. Amba Mishra ACSE0501 DA 81
A Unit I
Sorting and Order Statistics
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 82
Insertion Sorting
Insertion sort is a simple sorting algorithm that works similarly to the way
you sort playing cards in your hands.
The array is virtually split into a sorted and an unsorted part. Values from the
unsorted part are picked and placed in the correct position in the sorted part.
Complexity Analysis of Insertion Sort:
Time Complexity of Insertion Sort
The worst-case time complexity of the Insertion sort is O(N^2)
The average case time complexity of the Insertion sort is O(N^2)
The time complexity of the best case is O(N).
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 83
Sorting(CO1)
Insertion Sort Algorithm
Algorithm: We use a procedure INSERTION_SORT. It takes as
parameters an array A[1.. n] and the length n of the array.
INSERTION_SORT (A)
1. FOR j ← 2 TO length[A]
2. DO key ← A[j]
3. //{Put A[j] into the sorted sequence A[1 . . j − 1]}
4. i ← j − 1
5. WHILE i > 0 and A[i] > key
6. DO A[i +1] ← A[i]
7. i←i−1
8. A[i + 1] ← key
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 84
Sorting(CO1)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 85
Sorting(CO1)
Insertion Sort
Three Cases: (Explaination )
Best-Case The best case occurs if the array is already sorted. the while-loop
in line 5 executed only once for each j. This happens if given array A is
already sorted. T(n) = an + b = O(n) It is a linear function of n.
Worst case The worst-case occurs if the array is sorted in reverse order i.e.,
in decreasing order. the worst-case occurs, when line 5 executed j times for
each j. This can happens if array A starts out in reverse order T(n) =
an2 + bn + c = O(n2)
Average case: When half of the array is sorted and half of the array is
unsorted it produces O(n2)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 86
Insertion Sorting (Algo)/Pseudocode
30 50 10 60 20 40
Insertion sort (A,n)
{ 1 2 3 4 5 6
for j 2 to n
{
Key = A[j]
i= j-1
while(i>0 and A[i] > key)
{
A[i+1] =A[i]
i=i-1
}
A[i+1]=key
}
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 87
Shell Sort
Shell sort is the generalization of insertion sort, which overcomes the
drawbacks of insertion sort by comparing elements separated by a gap
of several positions.
It is a sorting algorithm that is an extended version of insertion sort.
Shell sort has improved the average time complexity of insertion sort.
As similar to insertion sort, it is a comparison-based and in-place
sorting algorithm. Shell sort is efficient for medium-sized data sets.
Case Time Complexity
Time Complexity
Best O(nlog n)
Average O(nlog n)
Worst O(n^2)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 88
Shell Sort Algo
for (gap =n/2 ; gap >=1 ; gap = gap/2 )
{
for (j=gap ; j < n ; j++)
{
for (i=j-gap ; i >=0 ; i=i-gap )
{
if (a[i+gap] > a[i] )
{break;
}
Else
Swap (a[i + gap] , a[i] ) }
}}}
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 89
Time complexity analysis Shell Sort
• Complexity in the Worst-Case Scenario: Less Than or Equal to O (n 2)
• The worst-case complexity for shell sort, according to the Poonen Theorem, is (N log
N)2/(log log N)2, or (N log N)2/log log N), or (N(log N)2), or something in between.
• Complexity in the Best Case: O(n*Log n)
The total number of comparisons for each interval (or increment) is equal to the
size of the array when it is already sorted.
• Complexity in the Average Case: O(n*log n)
It's somewhere around O. (n1.25).
• The degree of complexity is determined by the interval picked. The above complexity
varies depending on the increment sequences used. The best increment sequence has
yet to be discovered.
12/24/2024 Dr. Amba Mishra ACSE0501 DA 90
A Unit I
Comparison of Sorting Algorithms
12/24/2024 Dr. Amba Mishra ACSE0501 DA 91
A Unit I
Sorting in Linear Time
• We know that it is not possible to sort n elements faster than Ω(n lg
n) in the worst case when using only comparisons (i.e. in the
decision tree model). A question we can ask is: Are there other ways
to sort? What else could we use besides comparisons? Let’s think
about the following problem: Exercise: Give an O(n) algorithm to
sort n integers in the range 0..999. As we can see from this
example, non-comparison sorting algorithm exist, but they crucially
exploit special properties of the input (such as integers in a small
range). The most common ones are bucket sort, counting sort and
radix sort.
12/24/2024 Dr. Amba Mishra ACSE0501 DA 92
A Unit I
Sorting(CO1)
Heap Sort
• Heap sort is a comparison based sorting technique based on Binary
Heap data structure.
• The binary heap data structure is an array that can be viewed as
almost complete binary tree.
• Each node of the binary tree corresponds to an element of the array.
• It is similar to selection sort where we first find the maximum
element and place the maximum element at the end.
• We repeat the same process for remaining element.
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 93
Sorting(CO1)
Heap Sort
• For Example
• We represent heaps in level order, going from left to right.
• The array corresponding to the heap above is [25, 13, 17, 5, 8, 3].
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 94
Sorting(CO1)
Heap Sort
The root of the tree A[1] and given index i of a node, the indices of its parent,
left child and right child can be computed as
(if indexing of array starts from 1 )
PARENT (i) = return floor(i/2)
LEFT (i) = return 2i
RIGHT (i) = return 2i + 1
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 95
Sorting(CO1)
Heap Property
1. Max-heap property: A max-heap is a binary tree such that. - the data
contained in each node is greater than (or equal to) the data in that node's
children. ie. for every node i other than the root
A[PARENT(i)] >= A[i]
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 96
Sorting(CO1)
2. Min-heap property: A min-heap is a binary tree such that. - the data
contained in each node is less than (or equal to) the data in that node's
children. - the binary tree is complete
for every node i other than the root
A[PARENT(i)] <= A[i]
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 97
Heap Sorting(CO1)
6 STEPS OF A HEAP SORT ALGORITHM :
1. Transform the array into a binary tree by inserting each element as a node
in a breadth-first manner.
2. Convert the binary tree into a max heap, ensuring that all parent nodes are
greater than or equal to their child nodes.
3. Swap the root node — the largest element — with the last element in the
heap.
4. Call the heapify() function to restore the max heap
5. Repeat step 3 and 4 until the heap is sorted, and exclude the last element
from heap on each iteration
6. After each swap and heapify () call, ensure the max heap property is
satisfied
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 98
Heap Sorting(CO1)
1. TRANSFORM THE ARRAY INTO A BINARY TREE
unsorted array we have [12, 11, 31, 3, 5, 7, 9]
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 99
Heap Sorting(CO1)
2. CONVERT THE BINARY TREE INTO A MAX HEAP
• In a max heap, all parent nodes must have values that are greater than or equal to
the values of their children.
• Means swapping node 12 and node 31 positions in the tree to satisfy the
requirements for a max-heap tree.
max heap = [31, 11, 12, 3, 5, 7, 9]
• Double-check complete binary tree
satisfies all of the necessary properties
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 100
Heap Sorting(CO1)
3. SWAP THE ROOT NODE WITH THE LAST ELEMENT IN THE
HEAP (DELETION)
swapping the element in the first position of the max-heap array with the
element in the last position of the max-heap array.
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 101
Heap Sorting(CO1)
we will be omitting the last value because it’s in a sorted position.
Therefore, we move forward with the following array into the next step:
[9, 11, 12, 3, 4, 7]
Now, transform the array into a tree, then the tree into a max heap.
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 102
Heap Sorting(CO1)
4. CALL THE HEAPIFY() FUNCTION
• The process of converting the tree or array into a max heap as heapify.
• The tree structure may no longer satisfy the requirements of a max heap
after the root node has been swapped
• The heapify () function should be called again to restore the max heap
property.
rearranged heap [12, 11, 9, 3, 5, 7]
• And again, we swap the values in the first and last position of the max-heap array
representation.
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 103
Heap Sorting(CO1)
5. REPEAT STEPS 3 AND 4 UNTIL THE HEAP IS SORTED
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 104
Heap Sorting(CO1)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 105
Heap Sorting(CO1)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 106
Heap Sorting(CO1)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 107
Heap Sorting(CO1)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 108
Heap Sorting(CO1)
6. ENSURE THE MAX HEAP PROPERTY IS SATISFIED
The final sorted array: [3, 5, 7, 9, 11, 12, 31]
The heap sort algorithm's time complexity is O ( n log n) in all cases—
best case, worst case, and average case.
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 109
Sorting(CO1)
Four basic procedures on heap are
1. Heapify, which runs in O( n) time.
2. Build-Heap, which runs in linear time.
3. Heap Sort, which runs in O(n lg n) time.
4. Extract-Max, which runs in O(lg n) time.
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 110
Sorting(CO1)
Heap Sort Algorithm
HEAPSORT (A)
1. BUILD_HEAP (A)
2. for i ← length (A) down to 2 do //reducing heap size
exchange A[1] ↔ A[i] // last & first swap
heap-size [A] ← heap-size [A] – 1 // as element del heap size reduces
Heapify (A, 1) // starts from root
The HEAPSORT procedure takes time O(n lg n), since the call to
BUILD_HEAP takes time O(n) and each of the n -1 calls to Heapify takes
time O(lg n).
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 111
Sorting(CO1)
Build Max Heap (A)
1. heap-size [A] ← length [A] //heap equals to array size
2. For i ← lower bound (length [A])/2 down to 1
// from where elements will be check
3. Do Max Heapify [A, i]
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 112
Sorting(CO1)
Heapify (A, i)
1. l ← left [i]
2. r ← right [i]
3. if l ≤ heap-size [A] and A[l] > A[i]
4. then largest ← l
5. else largest ← i
6. if r ≤ heap-size [A] and A[r] > A[largest]
7. then largest ← r
8. if largest ≠ i
9. then exchange A[i] ↔ A[largest]
10. Heapify (A, largest)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 113
Sorting(CO1)
Characteristics of Heap Sort Algorithm
• The heap sort combines the best of both merge sort and insertion
sort. Like merge sort, the worst case time of heap sort is O(n log n) and
like insertion sort, heap sort sorts in-place.
• The heap sort algorithm starts by using procedure BUILD-HEAP to build
a heap on the input array A[1 . . n].
• Since the maximum element of the array stored at the root A[1], it can
be put into its correct final position by exchanging it with A[n] (the last
element in A).
• If we now discard node n from the heap than the remaining elements
can be made into heap. Note that the new element at the root may
violate the heap property.
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 114
Sorting(CO1)
Example: A=[7, 4, 3, 1, 2]
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 115
Priority Queue
• A priority queue is a type of queue
that arranges elements based on
their priority values.
• Elements with higher priority values
are typically retrieved before
elements with lower priority values.
12/24/2024 Dr. Amba Mishra ACSE0501 DA 116
A Unit I
Operation on Binary Heap
• insert(p): Inserts a new element with
priority p.
• extractMax(): Extracts an element
with maximum priority.
• getMax(): Returns an element with
maximum priority.
• IncreaseKey(i, p): Increase the
priority of an element pointed
by i to p.
12/24/2024 Dr. Amba Mishra ACSE0501 DA 117
A Unit I
Insert 32 in this tree
12/24/2024 Dr. Amba Mishra ACSE0501 DA 118
A Unit I
12/24/2024 Dr. Amba Mishra ACSE0501 DA 119
A Unit I
Extract Max
12/24/2024 Dr. Amba Mishra ACSE0501 DA 120
A Unit I
Extract Max
12/24/2024 Dr. Amba Mishra ACSE0501 DA 121
A Unit I
Change Priority/Increase Key
Change the priority of nodes 11 to
35
12/24/2024 Dr. Amba Mishra ACSE0501 DA 122
A Unit I
Priority Queue Algorithm
Algorithm to find number with highest priority
Heap_Maximum(A)
return A[1]
Running Time Constant (1)
12/24/2024 Dr. Amba Mishra ACSE0501 DA 123
A Unit I
Priority Queue Algorithm
Algorithm to find number with highest priority
and swap with first element.
Heap_Extract_Maximum(A, heap_size)
if A.heap_size<1
error “heap underflow”
Running Time –
Max = A[1] O(log2 n)
A[1] = A[heap_size]
heap_size = heap_size-1
Max_heapify(A,1)
return max
12/24/2024 Dr. Amba Mishra ACSE0501 DA 124
A Unit I
Heap-Increase-Key(A, i, key)
Heap-Increase-Key(A, i, key)
// Input: A: an array representing a heap, i: an array index, key: a new
key greater than A[i]
// Output: A still representing a heap where the key of A[i] was increased
to key
// Running Time: O(log n) where n =heap-size[A]
1 if key < A[i]
2 error(“New key must be larger than current key”)
3 A[i] ← key
Running Time –
4 while i > 1 and A[Parent(i)] < A[i] O(log n) 2
5 exchange A[i] and A[Parent(i)]
6 i ← Parent(i)
12/24/2024 Dr. Amba Mishra ACSE0501 DA 125
A Unit I
Max_Heap-Insert(A, key)
Max_Heap-Insert(A, key)
heap_size = heap_size +1
A[heap_size ] = -infinity //consider it smallest
Heap-Increase-Key(A, heap_size, key)
Running Time –
O(log2 n)
12/24/2024 Dr. Amba Mishra ACSE0501 DA 126
A Unit I
Sorting(CO1)
Counting Sort (non comparison based )
• Counting sort is a stable sorting technique, which is used
to sort objects according to the keys that are small numbers.
• It counts the number of keys whose key values are same.
• This sorting technique is effective when the difference between
different keys are not so big, otherwise, it can increase the space
complexity
• It works by counting the number of objects having distinct key values
(kind of hashing).
• Then there will be some arithmetic to calculate the position of each
object in the output sequence.
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 127
Sorting(CO1)
COUNTING_SORT (A, B, k)
1. for i ← 0 to k do
2. c[i] ← 0
3. for j ← 1 to length[A] do
4. c[A[j]] ← c[A[j]] + 1
5. //c[i] now contains the number of elements equal to i
6. for i ← 1 to k do
7. c[i] ← c[i] + c[i-1]
8. // c[i] now contains the number of elements ≤ i
9. for j ← length[A] downto 1 do
10. B[c[A[j]]] ← A[j]
11. c[A[j]] ← c[A[j]] – 1
Analysis-The average time complexity for Counting Sort is
O(n). The space complexity for Counting Sort is O(n+k).
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 128
Sorting(CO1)
Counting Sort
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 129
Sorting(CO1)
Radix Sort
• The idea of Radix Sort is to do digit by digit sort starting from
least significant digit to most significant digit.
• Radix sort uses counting sort as a subroutine to sort.
• Radix sort is a non-comparative integer sorting algorithm that
sorts data with integer keys by grouping keys by the individual
digits which share the same significant position and value.
• To sort d digits:
function radixSort(arr)
maxNum = maximum element in arr
exp = 1
while maxNum / exp > 0
countingSort(arr, exp)
exp *= 10
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 130
Sorting(CO1)
Radix Sort
Complexity Analysis of Radix Sort:
Time Complexity:
•Radix sort is a non-comparative integer sorting algorithm that sorts data
with integer keys by grouping the keys by the individual digits which share
the same significant position and value. It has a time complexity of O(d * (n
+ b)), where d is the number of digits, n is the number of elements, and b is
the base of the number system being used.
•In practical implementations, radix sort is often faster than other
comparison-based sorting algorithms, such as quicksort or merge sort, for
large datasets, especially when the keys have many digits. However, its time
complexity grows linearly with the number of digits, and so it is not as
efficient for small datasets.
Auxiliary Space:
•Radix sort also has a space complexity of O(n + b), where n is the number
of elements and b is the base of the number system. This space complexity
comes from the need to create
12/24/2024 Dr. Ambabuckets
Mishra for eachDAA
ACSE0501 digit value
Unit I and to copy 131
the
elements back to the original array after each digit has been sorted.
Sorting(CO1)
Radix Sort:
Following example shows how Radix sort operates on four 3-digits
number.
Radix sort complexity is O(kn) for n keys which are integers of word
size k. For all there cases time i.e best , worst and average time
complexity is O(kn).
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 132
Sorting(CO1)
Bucket Sort
• Bucket sort, is a sorting algorithm that works by partitioning an array
into a number of buckets.
• Each bucket is then sorted individually, by using a different sorting
algorithm.
• Divide [0, 1) into n equal-sized buckets.
• Distribute the n input values into the buckets.
• Sort each bucket.
• Then go through buckets in order, listing elements in each one
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 133
Sorting(CO1)
BUCKET_SORT (A)
1. n ← length [A]
2. For i = 1 to n do
3. Insert A[i] into list B[nA[i]]
4. For i = 0 to n-1 do
5. Sort list B with Insertion sort
6. Concatenate the lists B[0], B[1], . . B[n-1] together in order.
• Time Complexity: O(n + k) for best case and average case and
O(n^2) for the worst case.
• Space Complexity: O(nk) for worst case
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 134
Sorting(CO1)
Bucket Sort
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 135
Daily Quiz
Q1) Process of inserting an element in stack is called
____________
Q2) Process of removing an element from stack is called
__________
Q3) Master’s theorem is used for?
Q4) How many cases are there under Master’s theorem?
Q5) In recursion, the condition for which the function will stop
calling itself is ____________
Q6) What is the average case running time of an insertion
sort algorithm?
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 136
Daily Quiz
Q7) What is the running time of an insertion sort algorithm if the input
is pre-sorted?
Q8) In C, what are the basic loops required to perform an insertion
sort?
Q9)Which of the following sorting algorithm is best suited if the
elements are already sorted?
Q10) What is recurrence for worst case of QuickSort and what is the
time complexity in Worst case?
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 137
Weekly Assignment
Q1 Solve the recurrence relation by iteration T (n) = T (n-1) + n 4 [CO1]
Q2 Rank the following by growth rate 2 lg n, (√2)lg n, log n!, log (logn),
log2n, (1/3) n, n1/lg n, (3/2) n [CO1]
Q3 Solve the recurrence: T (n) = 50 T (n/49) + log n!
[CO1]
Q4 Solve the following recurrence: T (n) = √n T (√n) + n
[CO1]
Q5 Use the master method to give tight asymptotic bounds for the
following recurrence. T (n) = 4T (n/2) + n.
[CO1]
Q6 Solve the recurrence T (n) = 2 T (√n) + 1 by making a change of
variables. Your solution should be asymptotically tight. Do not worry
about whether values are integral
[CO1]
Q7 Solve any two of the
12/24/2024
following recurrences
Dr. Amba Mishra ACSE0501 DAA
by Unit
using
I
most suitable
138
method for solving recurrence relations. Your solution should be
Weekly Assignment
Q8) How will you sort following array of 5 elements using heap sort
5, 9, 1, 17 and 6. [CO1]
Q9) llustrate the operation of INSERTION-SORT on the array
A = 31, 41, 59, 26, 41, 58 [CO1]
Q10) What do you mean by ‘Stable sorting algorithms’? Quick sort is
unstable where as merge is an stable sorting algorithm. Do you
agree with the above statement? Justify your answer. [CO1]
Q11) Analyze the running time of quick sort in the average case.
Q12) What is time complexity of counting sort? Sort 1, 9, 3, 3, 4, 5, 6,
7, 7, 8 by counting sort. [CO1]
Q13) Find out the worst case running time of merge sort. [CO1]
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 139
Faculty Video Links, You tube & NPTEL
Video Links and Online Courses Details
• You tube/other Video Links
• https://www.youtube.com/watch?v=yRM3sc57q0c&list=PLXFMml
k03Dt7Q0xr1PIAriY5623cKiH7V
• https://www.youtube.com/watch?v=A03oI0znAoc
• https://www.youtube.com/watch?v=Nd0XDY-jVHs
• https://www.youtube.com/watch?v=4V30R3I1vLI
• https://www.youtube.com/watch?v=IawM82BQ4II
• https://www.youtube.com/watch?v=1K9ebQJosvo
• https://www.youtube.com/watch?v=OynWkEj0S-s
• https://www.youtube.com/watch?v=CyknhZbfMqc
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 140
Faculty Video Links, You tube & NPTEL
Video Links and Online Courses Details
• You tube/other Video Links
• https://www.youtube.com/watch?v=BO145HIUHRg
• https://www.youtube.com/watch?v=mB5HXBb_HY8
• https://www.youtube.com/watch?v=6pV2IF0fgKY
• https://www.youtube.com/watch?v=7h1s2SojIRw
• https://www.youtube.com/watch?v=HqPJF2L5h9U
• https://www.youtube.com/watch?v=JMlYkE8hGJM
• https://www.youtube.com/watch?v=pEJiGC-ObQE
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 141
MCQ s
Q1. Two main measures for the efficiency of an algorithm are
a. Processor and memory b. Complexity and
capacity
c. Time and space d. Data and space
Q2. The Worst case occur in linear search algorithm when
a. Item is somewhere in the middle of the array
b. Item is not in the array at all
c. Item is the last element in the array
d. Item is the last element in the array or is not there at all
Q3. The worst case runtime of linear search(recursive) algorithm
a) O(n) b) O(logn) c) O(n2) d) O(nx)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 142
MCQ s
Q4. Which of the following sorting algorithms is the fastest?
(a) Merge sort (b) Quick sort (c) Insertion sort (d) Shell sort
Q5. What is the worst case time complexity of a quick sort algorithm?
(a) O(N) (b) O(N log N) (c) O(N2) (d) O(log N)
Q6. Quick sort is a __________
(a) greedy algorithm
(b) divide and conquer algorithm
(c) dynamic programming algorithm
(d) backtracking algorithm
Q7. What is the worst case time complexity of merge sort?
(a) O(n log n) (b) O(n2) (c) O(n2 log n) (d) O(n log
n2)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 143
MCQ
Q8. The recurrence relation for the linear search recursive algorithm
a)T(n-2)+c b) 2T(n-1)+c c) T(n-1)+c d) T(n+1)+c
Q9. If algo time complexity is O(1), then what we called this ?
a) Linear b)Constant c)Exponent
Q10. List out all stable sort and unstable sort.
Unstable Sorting Algorithms:
Stable Sorting Algorithms:
1.Heap Sort
1. Insertion Sort
2.Quick Sort
2. Merge Sort 3.Selection Sort
3. Bubble Sort 4.Shell Sort
4. Counting Sort
5. Tim Sort
12/24/2024 Dr. Amba Mishra ACSE0501 DA 144
A Unit I
Glossary Question
Q.1 The complexity of searching an element from a set of n elements using Binary search
algorithm is_______
a. O(n log n)
b. O(log n)
c. O(n2) Incorrect
d. O(n)
Q.2______ is a condition that is always true at a particular point in an algorithm.
a. assertion
b. constant
c. exception
d. invariant Correct
Q.3 The running time of quick sort depends on the _________ .
a. Selection of pivot elements
b. Number of input
c. Number of passes
d. Arrangements of the elements
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 145
Glossary Question
Q.7 __________ is the worst case running time of shell sort, using Shell’s increments
a) O(N)
b) O(N log N)
c) O(log N)
d) O(N2)
Q.8 Heap sort is an implementation of ____________ using a descending priority
queue.
a) insertion sort
b) selection sort
c) bubble sort
d) merge sort
Q.9 The descending heap property is ___________
a) A[Parent(i)] = A[i]
b) A[Parent(i)] <= A[i]
c) A[Parent(i)] >= A[i]
d) A[Parent(i)] > 2 * A[i]
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 146
Glossary Question
Q.10 ______is wort case time complexity of Heap sort?
a) O(nlogn)
b) O(n2logn)
c) O(n2)
d) O(n3)
Q.11 In insertion sort, the average number of comparisons required to place the
7th element into its correct position is ______.
a) 9
b) 4
c) 7
d) 14
Q.12 _______ is the average case complexity of selection sort?
a) O(nlogn)
b) O(logn)
c) O(n)
d) O(n2)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 147
Old Question Papers(2020-2021)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 148
Old Question Papers(2020-2021)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 149
Old Question Papers(2020-2021)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 150
Old Question Papers(2020-2021)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 151
Old Question Papers(2020-2021)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 152
Old Question Papers(2020-2021)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 153
Old Question Papers(2021-2022)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 154
Old Question Papers(2021-2022)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 155
Old Question Papers(2021-2022)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 156
Old Question Papers(2021-2022)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 157
Old Question Papers(2021-2022)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 158
Old Question Papers(2021-2022)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 159
Old Question Papers(2021-2022)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 160
Old Question Papers(2021-2022)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 161
Old Question Papers(2021-2022)
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 162
Expected Questions for University Exam
Q1 Differentiate between asymptotic notation O and Ω. [CO1]
Q2 Use a recursion tree to give an asymptotically tight solution to the
recurrence T(n) = T(αn) + T((1 - α)n) + cn, where α is a constant in
the range 0 <α< 1 and c> 0 is also a constant. [CO1]
Q3 Find the time complexity of the recurrence relation
T(n)= n +T(n/10)+T(7n/5) [CO1]
Q4 Compare Time Complexity with Space Complexity. [CO1]
Q5 What are the characteristics of the algorithm? [CO1]
Q6 Show that the solution to T (n) = 2T (⌊n/2 ⌋ + 17) + n is O (n lg n).
[CO1]
Q7 Solve the recurrence: T (n) = 50 T (n/49) + log n!
[CO1]
Q8 Solve the recurrence using recursion tree method:
[CO1]
T (n) = T (n/2) + T (n/4) + T (n/8) + n
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 163
Expected Questions for University Exam
Q9. Write an algorithm to sort the given array of dement using Quick-
sort. Illustrate the operation of PARTITION procedure on the
array = < 2, 8, 7, 1, 3, 5, 6, 4 > . [CO1]
Q10. Apply BUCKET SORT algorithm on the following array 0 ∙ 78,
0 ∙ 17, 0 ∙ 39, 0 ∙ 26, 0 ∙ 72, 0 ∙ 94, 0 ∙ 21, 0 ∙ 21, 0 ∙ 12, 0 ∙ 23, 0 ∙ 68
[CO1]
Q11. Why Counting sort is called stable sort. [CO1]
Q12. Distinguish between Quick sort and Merge sort, and arrange the
following numbers in increasing order using merge sort
18, 29, 68, 32, 43, 37, 87, 24, 47, 50. [CO1]
Q13. What is divide and conquer strategy and explain the binary
search with suitable example. [CO1]
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 164
Recap Of Unit
This is an introductory chapter of Design & Analysis of Algorithm
covering the concept, importance and characteristics of algorithms. The
complexity and its calculation has been explained. Further, recursion
and different methodologies to solve them have also been provided.
In other part of unit different sorting algorithm – Insertion, Heap sort,
Quick sort, bucket sort, Radix Sort and Counting sort have been
discussed along with their complexities.
.
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 165
Thank You
12/24/2024 Dr. Amba Mishra ACSE0501 DAA Unit I 166
12/24/2024 Dr. Amba Mishra ACSE0501 DA 167
A Unit I