65,186
社区成员




#include <vector>
#include <stdio.h>
template<typename T>
int max(const std::vector<T>& v,int first,int last)
{
switch (last - first)
{
case 0: return first;
case 1: return v[last] > v[first] ? last : first;
default:
int i1 = max(v, first, (last + first) / 2);
int i2 = max(v, (last + first) / 2 + 1, last);
return v[i2] > v[i1] ? i2 : i1;
}
}
int main()
{
double d[] = {1.1, 3.1, -2, 3, 13.1, 13, 15, -3, 0};
std::vector<double> vd(d, d + 9);
printf("index of max = %d\n", max(vd, 0, 8));
return 0;
}