Recursive Function for finding the largest and smallest of n distinctive positive integers

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:

#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: 


-5 4 2 -9 2 3 

Output: 

min = -9 and max = 4