数据处理中经常有遇到 查找三个数据中的最大值、最小值、中间值的情况,而这又无现成的函数,又于是试着写了两套实现方案, 在代码简洁度和运行速度方面各有优劣,正所谓“鱼与熊掌不可兼得也”。
方案一
//找出三个数中的 最小值
template <typename T>
const T min3(const T a, const T b, const T c)
{
return min(a, min(b, c));
}
//找出三个数中的 最大值
template <typename T>
const T max3(const T a, const T b, const T c)
{
return max(a, max(b, c));
}
//找出三个数中的 中间值
template <typename T>
const T median3(const T a, const T b, const T c)
{
return (a + b +c -max3(a, b, c) -min3(a, b, c));
}
方案二
//找出三个数中的 中间值
template <typename T>
const T median3(const T a, const T b, const T c)
{
if (a < b)
{
if (b < c)
return b;
else if (a < c)
return c;
else
return a;
}
else
{
if (a < c)
return a;
else if (b < c)
return c;
else
return b;
}
}
//找出三个数中的 最大值
template <typename T>
const T max3(const T a, const T b, const T c)
{
if (a > b)
{
if (a > c)
return a;
else
return c;
}
else
{
if (b > c)
return b;
else
return c;
}
}
//找出三个数中的 最小值
template <typename T>
const T min3(const T a, const T b, const T c)
{
if (a < b)
{
if (a < c)
return a;
else
return c;
}
else
{
if (b < c)
return b;
else
return c;
}
}