求序列最大/最小值出现的一个疏忽
2009-07-28 13:51
281 查看
想做这样的一个功能,就是求List<double>的最大或者最小值,于是这样写了一个方法。
/// <summary>
/// 求最小值
/// </summary>
/// <param name="_series"></param>
/// <returns></returns>
public static double Min(List<double> _series)
{
double result = 0;
foreach (double item in _series)
{
if (result > item)
{
result = item;
}
}
return result;
}
看上去没什么问题,不过在测试的时候,发现序列里不可能出现0结果怎么最小值就成了0呢?后来仔细看了下这个方法,逻辑确实有问题,result初始值就是0它肯定比序列里的任何一个数都小。于是做了如下修改:
/// <summary>
/// 求最小值
/// </summary>
/// <param name="_series"></param>
/// <returns></returns>
public static double Min(List<double> _series)
{
double result = _series[0];
foreach (double item in _series)
{
if (result > item)
{
result = item;
}
}
return result;
}
还有一点很有意思,就是做除法,分局居然可以是0,当然算出的结果就很怪异了。
/// <summary>
/// 求最小值
/// </summary>
/// <param name="_series"></param>
/// <returns></returns>
public static double Min(List<double> _series)
{
double result = 0;
foreach (double item in _series)
{
if (result > item)
{
result = item;
}
}
return result;
}
看上去没什么问题,不过在测试的时候,发现序列里不可能出现0结果怎么最小值就成了0呢?后来仔细看了下这个方法,逻辑确实有问题,result初始值就是0它肯定比序列里的任何一个数都小。于是做了如下修改:
/// <summary>
/// 求最小值
/// </summary>
/// <param name="_series"></param>
/// <returns></returns>
public static double Min(List<double> _series)
{
double result = _series[0];
foreach (double item in _series)
{
if (result > item)
{
result = item;
}
}
return result;
}
还有一点很有意思,就是做除法,分局居然可以是0,当然算出的结果就很怪异了。
相关文章推荐
- 写出一个算法,对给定的n个数的序列,返回序列中的最大和最小的数
- 把一个包含n个正整数的序列划分成m个连续的子序列。设第i个序列的各数之和为S(i),求所有S(i)的最大值的最小值是多少?
- 查找一个序列的最大值和最小值
- 给定一个递增序列,a1 <a2 <...<an 。定义这个序列的最大间隔为d=max{ai+1 - ai }(1≤i<n),现在要从a2 ,a3 ..an-1 中删除一个元素。问剩余序列的最大间隔最小是多少?
- 求把一个序列分为两个两组,两组各自和相差最小的最大的那个和
- 同时获得一个序列的最小和最大值的方法
- 算法题:找出同一个序列中的最大值和最小值
- 一棵排序二叉树,令 f=(最大值+最小值)/2, 设计一个算法,找出距离f 值最近、大于f 值的结点。 复杂度如果是O(n2)则不得分
- SCUTCODE.124 笔芯子序列 【最大流最小割】
- 最大子序列问题:给定一整数序列A1,A2,A3...An(可能有负数),求A1~An的一个最大子序列Ai~Aj的和。
- 一棵排序二叉树,令 f=(最大值+最小值)/2,设计一个算法,找出距离f值最近、大于f值的结点。 复杂度如果是O(n2)则不得分。
- 较快速在一个数组中查找最大值和最小值
- 找出一个二维数组中的鞍点,即该位置上的元素在该行最大,在该列上最小(也可能没有鞍点)
- 排序过程中找到最大值和最小值在原始序列中的位置
- 阿里巴巴 2015 实习笔试题 分布式系统中的RPC请求经常出现乱序的情况 写一个算法来将一个乱序的序列保序输出
- 在圆圈中,把相隔一个数据的两个数 称作一对数,编写算法求出乘积最大的一对数和乘积最小的一对数
- 输入一个一维数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- 二叉排序树中,令f = (最大值+最小值) / 2,设计一个算法, 找出距离f值最近、大于f值的结点。复杂度不能为O(n2)。
- 算一个数的二进制,以及最大值最小值技巧
- 一是关于怎样找出和去除重复数据,这在另一个帖子利已有详细介绍。二是关于找出某一列里最大或最小的前几个,或是大于或小于某一个值(最大值或平均值)的数据