SlideShare a Scribd company logo
1 of 37
Recursion
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
Recursion - Definition
Recursion means "defining a problem in terms of itself".
For example, the Fibonacci sequence is defined as: F(i) = F(i-1) + F(i-2)
Recursion is the process of defining a problem (or the solution to a problem) in
terms of (a simpler version of) itself.
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
Recursive Function - Definition
A function which calls itself again and again directly or indirectly is defined as recursive function.
Classifications
1. Direct Recursive Function
If the function is called directly again
and again then it comes under the
Direct Recursive Function category
Sample Format:
Fun()
{
………..
Fun();
}
2. Indirect Recursive Function
If the function is called indirectly again and again then
it comes under the Indirect Recursive Function
category
Sample Format:
Fun1()
{
………
Fun2();
}
Fun2()
{
……
Fun1();
}
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
Parts of a Recursive Function
All recursive algorithms must have the following:
1. Base Case (i.e., when to stop)
2. Work toward Base Case (Converging towards the Base Case at each
recursive call)
1. Recursive Call (i.e., call the function by itself)
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
Problems: Recursion can be Implemented
Example 1
Find Factorial of a given number n?
n! = n * (n-1) * (n-2) * ... 2 * 1
n! = n * [(n-1) * (n-2) * ... 2 * 1]
n! = n * (n-1)!
Base Case for factorial recursive function is
0! = 1 or 1!=1
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
Recursive Function for finding factorial
int fact(n)
{
//Base Condition
if(n==0)
{
return 1;
}
else
{
return (n * fact(n-1));
}
}
fact(4)
= 4 * fact(3)
= 4 * (3 * fact(2))
= 4 * (3 * (2 * fact(1)))
= 4 * (3 * (2 * (1 * fact(0))))
= 4 * (3 * (2 * (1 * 1)))
= 4 * (3 * (2 * 1))
= 4 * (3 * 2)
= 4 * 6
= 24
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
Problems: Recursion can be Implemented
Example 2
Find Sum of first n natural numbers?
Sum(n) = n + (n-1) + (n-2) + ... 2 + 1
Sum(n) = n + [(n-1) + (n-2) + ... 2 + 1]
Sum(n) = n + Sum(n-1)
Base case for Sum of first n natural numbers is
Sum(1) = 1
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
Recursive Function for finding sum of first n
natural numbers
int sum(n)
{
//Base Condition
if(n==1)
{
return 1;
}
else
{
return (n + sum(n-1));
}
}
sum(4)
= 4 + sum(3)
= 4 + (3 + sum(2))
= 4 + (3 + (2 + sum(1)))
= 4 + (3 + (2 + (1)))
= 4 + (3 + (3))
= 4 + (6)
= 10
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
Function for finding the GCD of two numbers
int gcd(int p, int q)
{
if(p==0 && q!=0)
{
return q;
}
else
{
if(p!=0 && q==0)
{
return p;
}
}
//Base Condition
if(p==q)
{
return p;
}
else
{
if(p>q)
{
return(gcd(p-q,q));
}
else
{
return(gcd(p,q-p));
}
}
}
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
Find binomial coefficient value ncr = n!/((n-r)!*r!)
/* Program to find binomial co-efficient */
#include <stdio.h>
int binomial(int,int);
void main()
{
int n,r,ncr;
clrscr( );
printf(“Enter n and r valuesn“);
scanf(“%d %d”,&n,&r);
ncr=fact(n)/(fact(n-r)*fact(r));
printf(“n Binomial coefficient : %d”,ncr);
}
int fact(int n)
{
if(n==1)
return(1);
else
return(n*fact(n-1));
}
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
/* Method 2: C Program to calculate Binomial coefficient using Recursion */
#include<stdio.h>
int BC(int n, int k);
int main()
{
int n,k;
printf("Enter n and k : ");
scanf("%d%d",&n,&k);
printf("%nBinomial coefficientn",BC(n,k));
printf("%dn",BC(n,k));
return 0;
}
int BC(int n, int k)
{
if(k==0 || k==n)
return 1;
return BC(n-1,k-1) + BC(n-1,k);
}
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
Fibonacci Series
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
A formal definition of the recursive function for Fibonacci sequence is as follows:
0 if (n=0)
fib(n) = 1 if (n=1)
fib(n-1) + fib (n-2) if (n>1)
Fibonacci series or Fibonacci sequence is a series of integers where each number in the series is the sum of the
two preceding numbers. But here there are two starting values that are assumed i.e. 0 and 1. So the third
term can be generated as sum of these terms 0+1=1. The fourth term is the sum of 1 and 1 and so it 2. We
can generate as many terms as we require in the series.
F0=0;
F1=1;
F2=F0+F1=1
F3=F1+F2=2
. . .
Fn = Fn-2 + Fn-1
Fibonacci series is a sequence of following numbers
0 1 1 2 3 5 8 13 21 ....
Recursive Function Program for generating Fibonacci Series
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
#include<stdio.h>
int Fibonacci(int);
int main()
{
int n, i = 0, c;
scanf("%d",&n);
printf("Fibonacci seriesn");
for ( c = 1 ; c <= n ; c++ )
{
printf("%dn", Fibonacci(i));
i++;
}
return 0;
}
int Fibonacci(int n)
{
if ( n == 0 )
return 0;
else if ( n == 1 )
return 1;
else
return ( Fibonacci(n-1) + Fibonacci(n-2) );
}
Towers of Hanoi Problem
Tower of Hanoi is a mathematical puzzle where we have three
rods(pegs) and n disks. The objective of the puzzle is to move
the entire stack to another rod(peg), obeying the following simple
rules:
1.Only one disk can be moved at a time.
2.Each move consists of taking the upper disk from one of the
stacks and placing it on top of another stack i.e. a disk can only
be moved if it is the uppermost disk on a stack.
3.No disk may be placed on top of a smaller disk.
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
Disk 1 moved from A to C
Disk 2 moved from A to B
Disk 1 moved from C to B
Disk 3 moved from A to C
Disk 1 moved from B to A
Disk 2 moved from B to C
Disk 1 moved from A to C
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
Towers of Hanoi Problem for 3 Disks
The pattern here is : Shift 'n-1' disks from 'A' to 'B'. Shift last disk from 'A' to 'C'. Shift 'n-1' disks from 'B' to 'C'.
The pattern here is :
Shift 'n-1' disks from 'A' to 'B'.
Shift last disk from 'A' to 'C'.
Shift 'n-1' disks from 'B' to 'C'.
Towers of Hanoi Program for n disks
/* C program for Tower of Hanoi using Recursion */
#include <stdio.h>
void towers(int, char, char, char);
int main()
{
int num;
printf("Enter the number of disks : ");
scanf("%d", &num);
printf("The sequence of moves involved in the Tower of Hanoi are :n");
towers(num, 'A', 'C', 'B');
return 0;
}
void towers(int num, char frompeg, char topeg, char auxpeg)
{
if (num == 1)
{
printf("n Move disk 1 from peg %c to peg %c", frompeg, topeg);
return;
}
towers(num - 1, frompeg, auxpeg, topeg);
printf("n Move disk %d from peg %c to peg %c", num, frompeg, topeg);
towers(num - 1, auxpeg, topeg, frompeg);
}
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
Merge Sort Technique
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
Merge sort is a divide-and-conquer algorithm based on the idea of breaking down a list into several sub-
lists until each sublist consists of a single element and merging those sublists in a manner that results into a
sorted list.
Idea:
• Divide the unsorted list into N sublists, each containing 1 element.
• Take adjacent pairs of two singleton lists and merge them to form a list of 2 elements. N will now convert
into N/2 lists of size 2.
• Repeat the process till a single sorted list of obtained.
While comparing two sublists for merging, the first element of both lists is taken into consideration. While
sorting in ascending order, the element that is of a lesser value becomes a new element of the sorted list.
This procedure is repeated until both the smaller sublists are empty and the new combined sublist
comprises all the elements of both the sublists.
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
Merge-sort - Example
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
Merge Sort - Algorithm
MergeSort(A,low,high)
[A[0….n-1] is the input array to be sorted, low and high gives the
indices of the first and last elements of the array]
IF(low<high) THEN
mid = (low + high)/2
MergeSort(A,low,mid)
MergeSort(A, mid+1,high)
Merge(A,low,mid,high)
ENDIF
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
merge(A,low,mid,high)
[A[0….n-1] is the array where low give the index of the first and high gives
the index of the last element under consideration, mid gives the index of
the middle element]
[Initialize the Variables]
Step 1:
i=low
h=low
j=mid+1
[ Do merging process until one of the subsets get exhausted for the two sorted subsets
A[low..mid] and A[mid+1…high] after comparing the first element from each subset each time ]
Step 2:
WHILE (h<=mid and j<=high) DO
IF(A[h] <= A[j]) THEN
B[i] = A[h]
h = h+1
ELSE
B[i] = A[j]
j = j +1
ENDIF
i = i + 1
ENDWHILE
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
[First subset gets exhausted, add remaining elements of second subset to the resultant
set]
IF h>mid, THEN
FOR k=j to high DO
B[i] = A[k]
i=i+1
k=k+1
ENDFOR
ELSE [Second subset gets exhausted, add remaining elements of first subset to the
resultant set]
FOR k=h to mid DO
B[i] = A[k]
i=i+1
k=k+1
ENDFOR
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
[Copy elements from array B to A]
FOR k=low to high DO
A[k] = B[k]
k=k+1
ENDFOR
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
// Merge Sort - Program
#include<stdio.h>
void merge(int a[],int,int,int);
void mergesort(int a[],int ,int);
void main()
{
int a[10],n,i;
clrscr();
printf("nEnter the number of elementsn");
scanf("%d",&n);
printf("nEnter the e;lementsn");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
mergesort(a,0,n-1);
printf("nSorted elements aren");
for(i=0;i<n;i++)
printf("%dn",a[i]);
getch();
} by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
void mergesort(int a[],int low,int high)
{
int mid;
if(low<high)
{
mid=(low+high)/2;
mergesort(a,low,mid);
mergesort(a,mid+1,high);
merge(a,low,mid,high);
}
}
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
void merge(int a[],int low,int mid,int high)
{
int i,j,k,c[10];
i=low;
j=mid+1;
k=0;
while(i<=mid && j<=high)
{
if(a[i]<=a[j])
{
c[k]=a[i];
i++;
k++;
}
else
{
c[k]=a[j];
j++;
k++;
}
}
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
while(i<=mid)
{
c[k]=a[i];
i++;
k++;
}
while(j<=high)
{
c[k]=a[j];
j++;k++;
}
for(i=0;i<k;i++)
a[i]=c[i];
} by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
Quick Sort Technique
• Divide and Conquer Method
Procedure
• Step 1: Choose the Pivot element - First element of the given list of n
elements is considered as Pivot element
• Step 2: Remaining (n-1) elements are compared with this pivot element
to place it in appropriate position if the list of n elements were in sorted
order
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
Step 2: Remaining (n-1) elements are compared with this pivot element to place it in appropriate
position if the list of n elements were in sorted order
Process
We use two variable i and j.
Variable i is initialized to the index of the second element (i=1)
Variable j is initialized to the index of the last element (j=n-1)
According to Step 1 the Pivot element is the first element (pivot = A[0])
Left to Right Traversal
Pivot is compared with the elements starting from A[i] until an element whose value is greater than the pivot element is encountered. At this point, we
stop incrementing i and initiate Right to Left Traversal.
Right to Left Traversal
The variable j is decremented by comparing A[j] with the pivot until an element whose value is less than the pivot is encountered. At this point we stop
decrementing j .
Once one pair of Left to Right and Right to Left Traversals are over we compare the values of variables i and j. If i<j then swap A[i] with A[j] and continue
the process of Left to Right and Right to Left Traversals. If i>=j then we can stop this operation and swap pivot with A[j]. Then all the elements to the left
of pivot will be having lesser than the pivot and all the elements to the right of pivot will be having values greater than the pivot. Hence we can say the
pivot is placed in the correct location if the list of n elements were in sorted order.
Then we continue the process for the subset lying towards the left side of the pivot and right side of the pivot until we get single element subsets.
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
Quick Sort Example
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
Quick Sort - Algorithm
Quicksort(A[],lb,ub)
{
if(lb<ub)
{
q = partition(A,lb,ub);
Quicksort(A,lb,q);
Quicksort(A,q+1,ub);
}
}
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
Partition(A[],lb,ub)
{
pivot = A[lb];
i=lb;
j=ub + 1;
While true do
{
repeat i=i+1 until A[i]>pivot;
repeat j=j-1 until A[j]<pivot;
if i<j
swap(A[i],A[j]);
else
return j;
}
}
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
//Quicksort Program
#include<stdio.h>
void main()
{
int n,a[30],i;
clrscr();
printf("nEnter No. of elements:");
fflush(stdin);
scanf("%d",&n);
printf("nEnter %d elements",n);
for(i=0;i<n;i++)
{
fflush(stdin);
scanf("%d",&a[i]);
}
qs(a,0,n-1);
printf("nElements after sortingn");
for(i=0;i<n;i++)
{
printf("%dt",a[i]);
}
getch();
}
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
qs(int a[30],int lb,int ub)
{
int q;
if(lb<ub)
{
q=partition(a,lb,ub);
qs(a,lb,q-1);
qs(a,q+1,ub);
}
}
by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru
partition(int a[30],int lb, int ub)
{
int pivot=a[lb],i=lb+1,j=ub,temp;
while(1)
{
while(a[i]<pivot && i<ub)
{
i++;
}
while(a[j]>pivot && j>0)
{
j--;
}
if(i<j)
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
else
{
a[lb] = a[j];
a[j]=pivot;
return j;
}
}// End of while loop
} by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti
College(Autonomous) Bengaluru

More Related Content

Similar to Recursion Merge Sort Quick Sort.pptx

Skiena algorithm 2007 lecture15 backtracing
Skiena algorithm 2007 lecture15 backtracingSkiena algorithm 2007 lecture15 backtracing
Skiena algorithm 2007 lecture15 backtracing
zukun
 
X01 Supervised learning problem linear regression one feature theorie
X01 Supervised learning problem linear regression one feature theorieX01 Supervised learning problem linear regression one feature theorie
X01 Supervised learning problem linear regression one feature theorie
Marco Moldenhauer
 

Similar to Recursion Merge Sort Quick Sort.pptx (20)

Data Structure: Algorithm and analysis
Data Structure: Algorithm and analysisData Structure: Algorithm and analysis
Data Structure: Algorithm and analysis
 
On Some New Linear Generating Relations Involving I-Function of Two Variables
On Some New Linear Generating Relations Involving I-Function of Two VariablesOn Some New Linear Generating Relations Involving I-Function of Two Variables
On Some New Linear Generating Relations Involving I-Function of Two Variables
 
Alg1
Alg1Alg1
Alg1
 
Sorting pnk
Sorting pnkSorting pnk
Sorting pnk
 
Introducción al Análisis y diseño de algoritmos
Introducción al Análisis y diseño de algoritmosIntroducción al Análisis y diseño de algoritmos
Introducción al Análisis y diseño de algoritmos
 
Computational Complexity.pptx
Computational Complexity.pptxComputational Complexity.pptx
Computational Complexity.pptx
 
Skiena algorithm 2007 lecture15 backtracing
Skiena algorithm 2007 lecture15 backtracingSkiena algorithm 2007 lecture15 backtracing
Skiena algorithm 2007 lecture15 backtracing
 
Fundamental computing algorithms
Fundamental computing algorithmsFundamental computing algorithms
Fundamental computing algorithms
 
Dip 5 mathematical preliminaries
Dip 5 mathematical preliminariesDip 5 mathematical preliminaries
Dip 5 mathematical preliminaries
 
Ch01 basic concepts_nosoluiton
Ch01 basic concepts_nosoluitonCh01 basic concepts_nosoluiton
Ch01 basic concepts_nosoluiton
 
05_AJMS_332_21.pdf
05_AJMS_332_21.pdf05_AJMS_332_21.pdf
05_AJMS_332_21.pdf
 
Optimizing a New Nonlinear Reinforcement Scheme with Breeder genetic algorithm
Optimizing a New Nonlinear Reinforcement Scheme with Breeder genetic algorithmOptimizing a New Nonlinear Reinforcement Scheme with Breeder genetic algorithm
Optimizing a New Nonlinear Reinforcement Scheme with Breeder genetic algorithm
 
Oop lecture9 13
Oop lecture9 13Oop lecture9 13
Oop lecture9 13
 
The Generalized Difference Operator of the 퐧 퐭퐡 Kind
The Generalized Difference Operator of the 퐧 퐭퐡 KindThe Generalized Difference Operator of the 퐧 퐭퐡 Kind
The Generalized Difference Operator of the 퐧 퐭퐡 Kind
 
Algorithms - "Chapter 2 getting started"
Algorithms - "Chapter 2 getting started"Algorithms - "Chapter 2 getting started"
Algorithms - "Chapter 2 getting started"
 
Ijetcas14 567
Ijetcas14 567Ijetcas14 567
Ijetcas14 567
 
X01 Supervised learning problem linear regression one feature theorie
X01 Supervised learning problem linear regression one feature theorieX01 Supervised learning problem linear regression one feature theorie
X01 Supervised learning problem linear regression one feature theorie
 
Algorithms with-java-advanced-1.0
Algorithms with-java-advanced-1.0Algorithms with-java-advanced-1.0
Algorithms with-java-advanced-1.0
 
Learning a nonlinear embedding by preserving class neibourhood structure 최종
Learning a nonlinear embedding by preserving class neibourhood structure   최종Learning a nonlinear embedding by preserving class neibourhood structure   최종
Learning a nonlinear embedding by preserving class neibourhood structure 최종
 
Computation of Semi-Magic Squares Generated by Serpentine Matrices
Computation of Semi-Magic Squares Generated by Serpentine MatricesComputation of Semi-Magic Squares Generated by Serpentine Matrices
Computation of Semi-Magic Squares Generated by Serpentine Matrices
 

More from JeoJoyA (9)

Tree (1).pptx
Tree (1).pptxTree (1).pptx
Tree (1).pptx
 
OpenGL
OpenGLOpenGL
OpenGL
 
Sutherland Hodgman Polygon Clipping Technique.pptx
Sutherland Hodgman Polygon Clipping Technique.pptxSutherland Hodgman Polygon Clipping Technique.pptx
Sutherland Hodgman Polygon Clipping Technique.pptx
 
Visible Surfacte Detection Methods - Z-Buffer and Scanline methods.pptx
Visible Surfacte Detection Methods - Z-Buffer and Scanline methods.pptxVisible Surfacte Detection Methods - Z-Buffer and Scanline methods.pptx
Visible Surfacte Detection Methods - Z-Buffer and Scanline methods.pptx
 
Segment Structure Display List in Computer Graphics.pptx
Segment Structure Display List in Computer Graphics.pptxSegment Structure Display List in Computer Graphics.pptx
Segment Structure Display List in Computer Graphics.pptx
 
Tree.pptx
Tree.pptxTree.pptx
Tree.pptx
 
Linear and binary search
Linear and binary searchLinear and binary search
Linear and binary search
 
Linked list
Linked listLinked list
Linked list
 
Tree
TreeTree
Tree
 

Recently uploaded

HIV AND INFULENZA VIRUS PPT HIV PPT INFULENZA VIRUS PPT
HIV AND INFULENZA VIRUS PPT HIV PPT  INFULENZA VIRUS PPTHIV AND INFULENZA VIRUS PPT HIV PPT  INFULENZA VIRUS PPT
GENETICALLY MODIFIED ORGANISM'S PRESENTATION.ppt
GENETICALLY MODIFIED ORGANISM'S PRESENTATION.pptGENETICALLY MODIFIED ORGANISM'S PRESENTATION.ppt
GENETICALLY MODIFIED ORGANISM'S PRESENTATION.ppt
SyedArifMalki
 

Recently uploaded (20)

Technical english Technical english.pptx
Technical english Technical english.pptxTechnical english Technical english.pptx
Technical english Technical english.pptx
 
Efficient spin-up of Earth System Models usingsequence acceleration
Efficient spin-up of Earth System Models usingsequence accelerationEfficient spin-up of Earth System Models usingsequence acceleration
Efficient spin-up of Earth System Models usingsequence acceleration
 
MSCII_ FCT UNIT 5 TOXICOLOGY.pdf
MSCII_              FCT UNIT 5 TOXICOLOGY.pdfMSCII_              FCT UNIT 5 TOXICOLOGY.pdf
MSCII_ FCT UNIT 5 TOXICOLOGY.pdf
 
Molecular and Cellular Mechanism of Action of Hormones such as Growth Hormone...
Molecular and Cellular Mechanism of Action of Hormones such as Growth Hormone...Molecular and Cellular Mechanism of Action of Hormones such as Growth Hormone...
Molecular and Cellular Mechanism of Action of Hormones such as Growth Hormone...
 
GBSN - Biochemistry (Unit 3) Metabolism
GBSN - Biochemistry (Unit 3) MetabolismGBSN - Biochemistry (Unit 3) Metabolism
GBSN - Biochemistry (Unit 3) Metabolism
 
TransientOffsetin14CAftertheCarringtonEventRecordedbyPolarTreeRings
TransientOffsetin14CAftertheCarringtonEventRecordedbyPolarTreeRingsTransientOffsetin14CAftertheCarringtonEventRecordedbyPolarTreeRings
TransientOffsetin14CAftertheCarringtonEventRecordedbyPolarTreeRings
 
Adaptive Restore algorithm & importance Monte Carlo
Adaptive Restore algorithm & importance Monte CarloAdaptive Restore algorithm & importance Monte Carlo
Adaptive Restore algorithm & importance Monte Carlo
 
HIV AND INFULENZA VIRUS PPT HIV PPT INFULENZA VIRUS PPT
HIV AND INFULENZA VIRUS PPT HIV PPT  INFULENZA VIRUS PPTHIV AND INFULENZA VIRUS PPT HIV PPT  INFULENZA VIRUS PPT
HIV AND INFULENZA VIRUS PPT HIV PPT INFULENZA VIRUS PPT
 
A Scientific PowerPoint on Albert Einstein
A Scientific PowerPoint on Albert EinsteinA Scientific PowerPoint on Albert Einstein
A Scientific PowerPoint on Albert Einstein
 
RACEMIzATION AND ISOMERISATION completed.pptx
RACEMIzATION AND ISOMERISATION completed.pptxRACEMIzATION AND ISOMERISATION completed.pptx
RACEMIzATION AND ISOMERISATION completed.pptx
 
Terpineol and it's characterization pptx
Terpineol and it's characterization pptxTerpineol and it's characterization pptx
Terpineol and it's characterization pptx
 
GENETICALLY MODIFIED ORGANISM'S PRESENTATION.ppt
GENETICALLY MODIFIED ORGANISM'S PRESENTATION.pptGENETICALLY MODIFIED ORGANISM'S PRESENTATION.ppt
GENETICALLY MODIFIED ORGANISM'S PRESENTATION.ppt
 
An Overview of Active and Passive Targeting Strategies to Improve the Nano-Ca...
An Overview of Active and Passive Targeting Strategies to Improve the Nano-Ca...An Overview of Active and Passive Targeting Strategies to Improve the Nano-Ca...
An Overview of Active and Passive Targeting Strategies to Improve the Nano-Ca...
 
Precision Farming in Fruit Crops presentation
Precision Farming in Fruit Crops presentationPrecision Farming in Fruit Crops presentation
Precision Farming in Fruit Crops presentation
 
Fun for mover student's book- English book for teaching.pdf
Fun for mover student's book- English book for teaching.pdfFun for mover student's book- English book for teaching.pdf
Fun for mover student's book- English book for teaching.pdf
 
Heads-Up Multitasker: CHI 2024 Presentation.pdf
Heads-Up Multitasker: CHI 2024 Presentation.pdfHeads-Up Multitasker: CHI 2024 Presentation.pdf
Heads-Up Multitasker: CHI 2024 Presentation.pdf
 
NuGOweek 2024 programme final FLYER short.pdf
NuGOweek 2024 programme final FLYER short.pdfNuGOweek 2024 programme final FLYER short.pdf
NuGOweek 2024 programme final FLYER short.pdf
 
GBSN - Biochemistry (Unit 8) Enzymology
GBSN - Biochemistry (Unit 8) EnzymologyGBSN - Biochemistry (Unit 8) Enzymology
GBSN - Biochemistry (Unit 8) Enzymology
 
Taphonomy and Quality of the Fossil Record
Taphonomy and Quality of the  Fossil RecordTaphonomy and Quality of the  Fossil Record
Taphonomy and Quality of the Fossil Record
 
THE FUNDAMENTAL UNIT OF LIFE CLASS IX.ppt
THE FUNDAMENTAL UNIT OF LIFE CLASS IX.pptTHE FUNDAMENTAL UNIT OF LIFE CLASS IX.ppt
THE FUNDAMENTAL UNIT OF LIFE CLASS IX.ppt
 

Recursion Merge Sort Quick Sort.pptx

  • 1. Recursion by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 2. Recursion - Definition Recursion means "defining a problem in terms of itself". For example, the Fibonacci sequence is defined as: F(i) = F(i-1) + F(i-2) Recursion is the process of defining a problem (or the solution to a problem) in terms of (a simpler version of) itself. by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 3. Recursive Function - Definition A function which calls itself again and again directly or indirectly is defined as recursive function. Classifications 1. Direct Recursive Function If the function is called directly again and again then it comes under the Direct Recursive Function category Sample Format: Fun() { ……….. Fun(); } 2. Indirect Recursive Function If the function is called indirectly again and again then it comes under the Indirect Recursive Function category Sample Format: Fun1() { ……… Fun2(); } Fun2() { …… Fun1(); } by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 4. Parts of a Recursive Function All recursive algorithms must have the following: 1. Base Case (i.e., when to stop) 2. Work toward Base Case (Converging towards the Base Case at each recursive call) 1. Recursive Call (i.e., call the function by itself) by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 5. Problems: Recursion can be Implemented Example 1 Find Factorial of a given number n? n! = n * (n-1) * (n-2) * ... 2 * 1 n! = n * [(n-1) * (n-2) * ... 2 * 1] n! = n * (n-1)! Base Case for factorial recursive function is 0! = 1 or 1!=1 by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 6. Recursive Function for finding factorial int fact(n) { //Base Condition if(n==0) { return 1; } else { return (n * fact(n-1)); } } fact(4) = 4 * fact(3) = 4 * (3 * fact(2)) = 4 * (3 * (2 * fact(1))) = 4 * (3 * (2 * (1 * fact(0)))) = 4 * (3 * (2 * (1 * 1))) = 4 * (3 * (2 * 1)) = 4 * (3 * 2) = 4 * 6 = 24 by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 7. Problems: Recursion can be Implemented Example 2 Find Sum of first n natural numbers? Sum(n) = n + (n-1) + (n-2) + ... 2 + 1 Sum(n) = n + [(n-1) + (n-2) + ... 2 + 1] Sum(n) = n + Sum(n-1) Base case for Sum of first n natural numbers is Sum(1) = 1 by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 8. Recursive Function for finding sum of first n natural numbers int sum(n) { //Base Condition if(n==1) { return 1; } else { return (n + sum(n-1)); } } sum(4) = 4 + sum(3) = 4 + (3 + sum(2)) = 4 + (3 + (2 + sum(1))) = 4 + (3 + (2 + (1))) = 4 + (3 + (3)) = 4 + (6) = 10 by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 9. Function for finding the GCD of two numbers int gcd(int p, int q) { if(p==0 && q!=0) { return q; } else { if(p!=0 && q==0) { return p; } } //Base Condition if(p==q) { return p; } else { if(p>q) { return(gcd(p-q,q)); } else { return(gcd(p,q-p)); } } } by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 10. Find binomial coefficient value ncr = n!/((n-r)!*r!) /* Program to find binomial co-efficient */ #include <stdio.h> int binomial(int,int); void main() { int n,r,ncr; clrscr( ); printf(“Enter n and r valuesn“); scanf(“%d %d”,&n,&r); ncr=fact(n)/(fact(n-r)*fact(r)); printf(“n Binomial coefficient : %d”,ncr); } int fact(int n) { if(n==1) return(1); else return(n*fact(n-1)); } by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 11. /* Method 2: C Program to calculate Binomial coefficient using Recursion */ #include<stdio.h> int BC(int n, int k); int main() { int n,k; printf("Enter n and k : "); scanf("%d%d",&n,&k); printf("%nBinomial coefficientn",BC(n,k)); printf("%dn",BC(n,k)); return 0; } int BC(int n, int k) { if(k==0 || k==n) return 1; return BC(n-1,k-1) + BC(n-1,k); } by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 12. Fibonacci Series by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru A formal definition of the recursive function for Fibonacci sequence is as follows: 0 if (n=0) fib(n) = 1 if (n=1) fib(n-1) + fib (n-2) if (n>1) Fibonacci series or Fibonacci sequence is a series of integers where each number in the series is the sum of the two preceding numbers. But here there are two starting values that are assumed i.e. 0 and 1. So the third term can be generated as sum of these terms 0+1=1. The fourth term is the sum of 1 and 1 and so it 2. We can generate as many terms as we require in the series. F0=0; F1=1; F2=F0+F1=1 F3=F1+F2=2 . . . Fn = Fn-2 + Fn-1 Fibonacci series is a sequence of following numbers 0 1 1 2 3 5 8 13 21 ....
  • 13. Recursive Function Program for generating Fibonacci Series by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru #include<stdio.h> int Fibonacci(int); int main() { int n, i = 0, c; scanf("%d",&n); printf("Fibonacci seriesn"); for ( c = 1 ; c <= n ; c++ ) { printf("%dn", Fibonacci(i)); i++; } return 0; } int Fibonacci(int n) { if ( n == 0 ) return 0; else if ( n == 1 ) return 1; else return ( Fibonacci(n-1) + Fibonacci(n-2) ); }
  • 14. Towers of Hanoi Problem Tower of Hanoi is a mathematical puzzle where we have three rods(pegs) and n disks. The objective of the puzzle is to move the entire stack to another rod(peg), obeying the following simple rules: 1.Only one disk can be moved at a time. 2.Each move consists of taking the upper disk from one of the stacks and placing it on top of another stack i.e. a disk can only be moved if it is the uppermost disk on a stack. 3.No disk may be placed on top of a smaller disk. by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 15. Disk 1 moved from A to C Disk 2 moved from A to B Disk 1 moved from C to B Disk 3 moved from A to C Disk 1 moved from B to A Disk 2 moved from B to C Disk 1 moved from A to C by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru Towers of Hanoi Problem for 3 Disks The pattern here is : Shift 'n-1' disks from 'A' to 'B'. Shift last disk from 'A' to 'C'. Shift 'n-1' disks from 'B' to 'C'. The pattern here is : Shift 'n-1' disks from 'A' to 'B'. Shift last disk from 'A' to 'C'. Shift 'n-1' disks from 'B' to 'C'.
  • 16. Towers of Hanoi Program for n disks /* C program for Tower of Hanoi using Recursion */ #include <stdio.h> void towers(int, char, char, char); int main() { int num; printf("Enter the number of disks : "); scanf("%d", &num); printf("The sequence of moves involved in the Tower of Hanoi are :n"); towers(num, 'A', 'C', 'B'); return 0; } void towers(int num, char frompeg, char topeg, char auxpeg) { if (num == 1) { printf("n Move disk 1 from peg %c to peg %c", frompeg, topeg); return; } towers(num - 1, frompeg, auxpeg, topeg); printf("n Move disk %d from peg %c to peg %c", num, frompeg, topeg); towers(num - 1, auxpeg, topeg, frompeg); } by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 17. Merge Sort Technique by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 18. Merge sort is a divide-and-conquer algorithm based on the idea of breaking down a list into several sub- lists until each sublist consists of a single element and merging those sublists in a manner that results into a sorted list. Idea: • Divide the unsorted list into N sublists, each containing 1 element. • Take adjacent pairs of two singleton lists and merge them to form a list of 2 elements. N will now convert into N/2 lists of size 2. • Repeat the process till a single sorted list of obtained. While comparing two sublists for merging, the first element of both lists is taken into consideration. While sorting in ascending order, the element that is of a lesser value becomes a new element of the sorted list. This procedure is repeated until both the smaller sublists are empty and the new combined sublist comprises all the elements of both the sublists. by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 19. Merge-sort - Example by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 20. by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 21. Merge Sort - Algorithm MergeSort(A,low,high) [A[0….n-1] is the input array to be sorted, low and high gives the indices of the first and last elements of the array] IF(low<high) THEN mid = (low + high)/2 MergeSort(A,low,mid) MergeSort(A, mid+1,high) Merge(A,low,mid,high) ENDIF by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 22. merge(A,low,mid,high) [A[0….n-1] is the array where low give the index of the first and high gives the index of the last element under consideration, mid gives the index of the middle element] [Initialize the Variables] Step 1: i=low h=low j=mid+1
  • 23. [ Do merging process until one of the subsets get exhausted for the two sorted subsets A[low..mid] and A[mid+1…high] after comparing the first element from each subset each time ] Step 2: WHILE (h<=mid and j<=high) DO IF(A[h] <= A[j]) THEN B[i] = A[h] h = h+1 ELSE B[i] = A[j] j = j +1 ENDIF i = i + 1 ENDWHILE by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 24. [First subset gets exhausted, add remaining elements of second subset to the resultant set] IF h>mid, THEN FOR k=j to high DO B[i] = A[k] i=i+1 k=k+1 ENDFOR ELSE [Second subset gets exhausted, add remaining elements of first subset to the resultant set] FOR k=h to mid DO B[i] = A[k] i=i+1 k=k+1 ENDFOR by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 25. [Copy elements from array B to A] FOR k=low to high DO A[k] = B[k] k=k+1 ENDFOR by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 26. // Merge Sort - Program #include<stdio.h> void merge(int a[],int,int,int); void mergesort(int a[],int ,int); void main() { int a[10],n,i; clrscr(); printf("nEnter the number of elementsn"); scanf("%d",&n); printf("nEnter the e;lementsn"); for(i=0;i<n;i++) scanf("%d",&a[i]); mergesort(a,0,n-1); printf("nSorted elements aren"); for(i=0;i<n;i++) printf("%dn",a[i]); getch(); } by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 27. void mergesort(int a[],int low,int high) { int mid; if(low<high) { mid=(low+high)/2; mergesort(a,low,mid); mergesort(a,mid+1,high); merge(a,low,mid,high); } } by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 28. void merge(int a[],int low,int mid,int high) { int i,j,k,c[10]; i=low; j=mid+1; k=0; while(i<=mid && j<=high) { if(a[i]<=a[j]) { c[k]=a[i]; i++; k++; } else { c[k]=a[j]; j++; k++; } } by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 29. while(i<=mid) { c[k]=a[i]; i++; k++; } while(j<=high) { c[k]=a[j]; j++;k++; } for(i=0;i<k;i++) a[i]=c[i]; } by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 30. Quick Sort Technique • Divide and Conquer Method Procedure • Step 1: Choose the Pivot element - First element of the given list of n elements is considered as Pivot element • Step 2: Remaining (n-1) elements are compared with this pivot element to place it in appropriate position if the list of n elements were in sorted order by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 31. Step 2: Remaining (n-1) elements are compared with this pivot element to place it in appropriate position if the list of n elements were in sorted order Process We use two variable i and j. Variable i is initialized to the index of the second element (i=1) Variable j is initialized to the index of the last element (j=n-1) According to Step 1 the Pivot element is the first element (pivot = A[0]) Left to Right Traversal Pivot is compared with the elements starting from A[i] until an element whose value is greater than the pivot element is encountered. At this point, we stop incrementing i and initiate Right to Left Traversal. Right to Left Traversal The variable j is decremented by comparing A[j] with the pivot until an element whose value is less than the pivot is encountered. At this point we stop decrementing j . Once one pair of Left to Right and Right to Left Traversals are over we compare the values of variables i and j. If i<j then swap A[i] with A[j] and continue the process of Left to Right and Right to Left Traversals. If i>=j then we can stop this operation and swap pivot with A[j]. Then all the elements to the left of pivot will be having lesser than the pivot and all the elements to the right of pivot will be having values greater than the pivot. Hence we can say the pivot is placed in the correct location if the list of n elements were in sorted order. Then we continue the process for the subset lying towards the left side of the pivot and right side of the pivot until we get single element subsets. by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 32. Quick Sort Example by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 33. Quick Sort - Algorithm Quicksort(A[],lb,ub) { if(lb<ub) { q = partition(A,lb,ub); Quicksort(A,lb,q); Quicksort(A,q+1,ub); } } by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 34. Partition(A[],lb,ub) { pivot = A[lb]; i=lb; j=ub + 1; While true do { repeat i=i+1 until A[i]>pivot; repeat j=j-1 until A[j]<pivot; if i<j swap(A[i],A[j]); else return j; } } by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 35. //Quicksort Program #include<stdio.h> void main() { int n,a[30],i; clrscr(); printf("nEnter No. of elements:"); fflush(stdin); scanf("%d",&n); printf("nEnter %d elements",n); for(i=0;i<n;i++) { fflush(stdin); scanf("%d",&a[i]); } qs(a,0,n-1); printf("nElements after sortingn"); for(i=0;i<n;i++) { printf("%dt",a[i]); } getch(); } by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 36. qs(int a[30],int lb,int ub) { int q; if(lb<ub) { q=partition(a,lb,ub); qs(a,lb,q-1); qs(a,q+1,ub); } } by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru
  • 37. partition(int a[30],int lb, int ub) { int pivot=a[lb],i=lb+1,j=ub,temp; while(1) { while(a[i]<pivot && i<ub) { i++; } while(a[j]>pivot && j>0) { j--; } if(i<j) { temp = a[i]; a[i] = a[j]; a[j] = temp; } else { a[lb] = a[j]; a[j]=pivot; return j; } }// End of while loop } by Prof. Jeo Joy A, Dept. of Computer Science, Kristu Jayanti College(Autonomous) Bengaluru