• C#求数组最大值或最大值位置索引


    常见求最大值,是数值型数组,这个通常遍历数组方式,或数组排序即可完成。但对于字符串或日期等非数值类型不能处理。下面给出泛型数组的最大值或最大值位置索引的自定义函数。

    数组最大值的位置索引

    //传入一个数组,求出一个数组的最大值的位置
    public static int MaxIndex<T>(T[] arr) where T : IComparable<T>
    {
        var i_Pos = 0;
        var value = arr[0];
        for (var i = 1; i < arr.Length; ++i)
        {
            var _value = arr[i];
            if (_value.CompareTo(value) > 0)
            {
                value = _value;
                i_Pos = i;
            }
        }
        return i_Pos;
    }

    数组最大值

    //传入一个数组,求出一个数组的最大值
    public static T MaxValue<T>(T[] arr) where T : IComparable<T>
    {
        var i_Pos = 0;
        var value = arr[0];
        for (var i = 1; i < arr.Length; ++i)
        {
            var _value = arr[i];
            if (_value.CompareTo(value) > 0)
            {
                value = _value;
                i_Pos = i;
            }
        }
        return value;
    }

    测试例如下:

    int[] arr = { 2, 31, 148, 754, 9143, 0, 4548149, 645, 2, 54 };
    Console.WriteLine("Index={0}, Value={1}, Type={2}",MaxIndex(arr),MaxValue(arr), MaxValue(arr).GetType());
                
    DateTime[] days = { DateTime.Parse("2019-10-11"), DateTime.Parse("2010-10-11"), DateTime.Parse("2019-10-11 00:00:00") };//, DateTime.Parse("2020-01-11") };
    Console.WriteLine("Index={0}, Value={1}, Type={2}", MaxIndex(days), MaxValue(days), MaxValue(days).GetType());
    
    string[] name = { "asdfg", "asdasda", "asda", "wa", "z" };
    Console.WriteLine("Index={0}, Value={1}, Type={2}", MaxIndex(name), MaxValue(name), MaxValue(name).GetType());

    同样地,你也可以写出一个求最小值的函数。

    完整VS示例如下:

    using System;
    
    namespace ConsoleApp_Test
    {
        class Program
        {
            //传入一个数组,求出一个数组的最大值的位置
            public static int MaxIndex<T>(T[] arr) where T : IComparable<T>
            {
                var i_Pos = 0;
                var value = arr[0];
                for (var i = 1; i < arr.Length; ++i)
                {
                    var _value = arr[i];
                    if (_value.CompareTo(value) > 0)
                    {
                        value = _value;
                        i_Pos = i;
                    }
                }
                return i_Pos;
            }
            
            //传入一个数组,求出一个数组的最大值
            public static T MaxValue<T>(T[] arr) where T : IComparable<T>
            {
                var i_Pos = 0;
                var value = arr[0];
                for (var i = 1; i < arr.Length; ++i)
                {
                    var _value = arr[i];
                    if (_value.CompareTo(value) > 0)
                    {
                        value = _value;
                        i_Pos = i;
                    }
                }
                return value;
            }
    
            static void Main(string[] args)
            {
                // 定义一个数组
                int[] arr = { 2, 31, 148, 754, 9143, 0, 4548149, 645, 2, 54 };
                Console.WriteLine("Index={0}, Value={1}, Type={2}",MaxIndex(arr),MaxValue(arr), MaxValue(arr).GetType());
                
                DateTime[] days = { DateTime.Parse("2019-10-11"), DateTime.Parse("2010-10-11"), DateTime.Parse("2019-10-11 00:00:00") };//, DateTime.Parse("2020-01-11") };
                Console.WriteLine("Index={0}, Value={1}, Type={2}", MaxIndex(days), MaxValue(days), MaxValue(days).GetType());
    
                string[] name = { "asdfg", "asdasda", "asda", "wa", "z" };
                Console.WriteLine("Index={0}, Value={1}, Type={2}", MaxIndex(name), MaxValue(name), MaxValue(name).GetType());
    
                Console.ReadKey();
            }
        }
    }
  • 相关阅读:
    c++爱问的面试问题
    Ognl底层使用
    [勘探开发]成绩,全栈开发,健全&amp;借贷
    FMS4
    Flex远程调用机制RemoteObject应用技巧
    Flex开发框架cairngorm入门实例
    RC1意思
    获取JAVA[WEB]项目相关路径的几种方法
    排序算法
    jQuery Validate
  • 原文地址:https://www.cnblogs.com/hnllhq/p/13438195.html
Copyright © 2020-2023  润新知