Recursive Function for finding the largest and smallest of n distinctive positive integers
Let N[] be an array holding n distinctive positive integers.
Index - Current index of the array (initially zero)
Size - Size of the array (number of elements)
Set min = INT_MAX
Set max = INT_MIN
Find_min_max( N[], index, size):
min = N[index] < min ? N[index] : min;
curmax = N[index] > max ? N[index] : max;
If curmax != min :
max = curmax;
If index < size :
Find_min_max ( N,index+1, size);
Else
Return;
Recurrence Relation :
T(n) = T(n-1) + O(1)
Run time :
O(n)
C Implementation:
Let N[] be an array holding n distinctive positive integers.
Index - Current index of the array (initially zero)
Size - Size of the array (number of elements)
Set min = INT_MAX
Set max = INT_MIN
Find_min_max( N[], index, size):
min = N[index] < min ? N[index] : min;
curmax = N[index] > max ? N[index] : max;
If curmax != min :
max = curmax;
If index < size :
Find_min_max ( N,index+1, size);
Else
Return;
Recurrence Relation :
T(n) = T(n-1) + O(1)
Run time :
O(n)
C Implementation:
#include <stdio.h> #include <limits.h> void find_min_max(int *a,int index,int size,int *min,int *max) { int curmax; *min = a[index] < *min ? a[index] : *min; curmax = a[index] > *max ? a[index] : *max; if(curmax != *min) *max = curmax; if(index < size) find_min_max(a,index+1,size,min,max); else return; } int main(void) { int n; int i; int a[1000]; int max = INT_MIN; int min = INT_MAX; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); find_min_max(a,0,n-1,&min,&max); printf("min = %d and max = %d",min,max); return 0; }
Input:
6
-5 4 2 -9 2 3
Output:
min = -9 and max = 4