>>657 これは O(N) だよ.というか関数型プログラミング言語では普通にされる書き方.
#include <stdio.h> 
#include <limits.h> 
typedef int func(int, int);
int foldl(func f, int z, int *first, int *last) {
  return first == last ? z : foldl(f, f(z, *first), first+1, last);
}
int min2(int a, int b) { return a < b ? a : b; }
int max2(int a, int b) { return a < b ? b : a; }
int min(int *first, int *last) { return foldl(min2, INT_MAX, first, last); }
int max(int *first, int *last) { return foldl(max2, INT_MIN, first, last); }

int main() {
  int a[]={65,82,47,98,100,83,71,39,54,26}; 
  printf("min=%d\n", min(a,a+sizeof(a)/sizeof(a[0]))); 
  printf("max=%d\n", max(a,a+sizeof(a)/sizeof(a[0]))); 
}