顺序统计:寻找序列中的最大最小数
2014-04-27 22:41
141 查看
查找输入序列中的最大最小数值,要求时间复杂度为1.5n
C#实现如下:
调用方法:
作者:Andy Zeng
欢迎任何形式的转载,但请务必注明出处。 http://www.cnblogs.com/andyzeng/p/3695372.html
C#实现如下:
public class MinMaxFinder<T> where T : IComparable<T> { public void FindMinMax(T[] array, int startIndex, int endIndex, out T minValue, out T maxValue) { maxValue = array[startIndex]; minValue = array[startIndex]; if ((endIndex - startIndex + 1) % 2 == 0)//偶数个数据 { for (int i = startIndex; i <= endIndex; i = i + 2) { if (array[i].CompareTo(array[i + 1]) >= 0) { if (array[i].CompareTo(maxValue) > 0) maxValue = array[i]; if (array[i + 1].CompareTo(minValue) < 0) minValue = array[i + 1]; } else { if (array[i + 1].CompareTo(maxValue) > 0) maxValue = array[i + 1]; if (array[i].CompareTo(minValue) < 0) minValue = array[i]; } } } else//奇数个数据 { for (int i = startIndex; i <= endIndex-1; i = i + 2) { if (array[i].CompareTo(array[i + 1]) >= 0) { if (array[i].CompareTo(maxValue) > 0) maxValue = array[i]; if (array[i + 1].CompareTo(minValue) < 0) minValue = array[i + 1]; } else { if (array[i + 1].CompareTo(maxValue) > 0) maxValue = array[i + 1]; if (array[i].CompareTo(minValue) < 0) minValue = array[i]; } } if (array[endIndex].CompareTo(maxValue) > 0) maxValue = array[endIndex]; if (array[endIndex].CompareTo(minValue) < 0) minValue = array[endIndex]; } } }
调用方法:
static void Main(string[] args) { //int[] data = new int[] { 23, 12, 45, 15, 1, 79, 8 }; int[] data = new int[] { 23, 12, 45, 15, 1, 79, 8 ,-1}; var minmaxfinder = new MinMaxFinder<int>(); int min, max; minmaxfinder.FindMinMax(data, 0, data.Length - 1, out min, out max); Console.WriteLine("min:{0} max:{1}", min, max); Console.ReadKey(); }
作者:Andy Zeng
欢迎任何形式的转载,但请务必注明出处。 http://www.cnblogs.com/andyzeng/p/3695372.html
相关文章推荐
- 无序序列中O(n)时间复杂度寻找最小(最大)的K个数
- njust 1925 sequence 拆分序列,寻找非降序列的最小个数,不变序列顺序。
- 顺序统计:寻找序列中第k小的数
- python寻找list中最大值、最小值并返回其所在位置
- uva 1619 单调 求一段序列和 和 其中最小值的乘积的最大值
- 求序列最大/最小值出现的一个疏忽
- 寻找在数组中一个元素是不是该行最小,该列最大的元素
- 编程之美寻找数组中的最大值和最小值以及扩展问题
- 寻找数组中的最大值和最小值
- 寻找数组中最大值和最小值
- 《算法导论》第9章 顺序统计学 (1)最小值和最大值
- 如何寻找数组中的最小值和最大值
- 统计,求指定时段内的平均值、最大(最小)值,以及最值出现的时刻
- 寻找一个数组中的最大和最小数
- 寻找最大数和最小数
- 寻找数组中的最大值和最小值(编程之美2.10)
- 数字之魅:寻找数组中的最大值和最小值
- 分治法寻找数组最大的两个数和最小的两个数
- 从两个顺序的字符串中寻找最大公共子串
- 寻找数组中的最大值和最小值(编程之美2.10,包括最大值和次大值)