zoukankan      html  css  js  c++  java
  • 对判断值在数组中的索引3种方法的性能测试,附源码【原创】

         /// <summary>
            /// 使用for循环判断
            /// </summary>
            /// <param name="str"></param>
            /// <param name="Num"></param>
            /// <returns></returns>
            private static int MetFor(string[] str, string Num)
            {
                for (int i = 0; i < str.Length; i++)
                {
                    if (str[i] == Num)
                    {
                        return i;
                    }
                }
                return -1;
            }


            /// <summary>
            /// 使用递归循环方法判断
            /// </summary>
            /// <param name="str"></param>
            /// <param name="Num"></param>
            /// <returns></returns>
            private static int MetRecursion(string[] str, string Num, int i)
            {
                if (i > str.Length)
                {
                    return -1;
                }
                if (str[i] == Num)
                {
                    return i;
                }

                i++;
                return MetRecursion(str, Num, i);


            }

            /// <summary>
            /// 使用Linq查询
            /// </summary>
            /// <param name="str"></param>
            /// <param name="Num"></param>
            /// <returns></returns>
            private static int MetNinq(string[] str, string Num)
            {


                ///使用Linq查询,将索引和值查出来,
                ///新建一个匿名类,属性包括 aa bool类型,和 Index 索引
                var tt = str.Select((num, index) => new
                {
                    aa = (Num == num),
                    Index = index

                });
                //将得到的输出结果进行判断,查找 aa为true的索引值
                //最后成功得到它的索引
                int number = tt.Where(n => n.aa == true).Last().Index;
                return number;
            }

    ---------------------------------------------------------------------------------性能测试结果对数组存在 110000条数据进行测试
    在同一台配置的计算机上: 

    使用for循环判断速度最快!
      耗时约:16毫秒

    使用 Linq查询,速度一般!
      耗时约: 25毫秒

    使用 递归判断!(OFF,>>>直接服务停止>>>>)


    原文来自:http://hi.baidu.com/xiaowei0705/blog/item/d952f033de6e820febc4af82.html
    经验在于积累----小伟
  • 相关阅读:
    Codeforces 877 C. Slava and tanks
    Codeforces 877 D. Olya and Energy Drinks
    2017 10.25 NOIP模拟赛
    2017 国庆湖南 Day1
    UVA 12113 Overlapping Squares
    学大伟业 国庆Day2
    51nod 1629 B君的圆锥
    51nod 1381 硬币游戏
    [JSOI2010]满汉全席
    学大伟业 2017 国庆 Day1
  • 原文地址:https://www.cnblogs.com/xiaowei0705/p/2015016.html
Copyright © 2011-2022 走看看