1.已知一个固定大小的数值数组,且该数组中的数值为常数,请设计一个尽可能快速的算法计算两个下标间所有数值的和。2.已知数组Array是一个已排序的数组,给出一个指定的值要求输出该值在数组中的下标,如果该值不存在则返回-1,写出适合 所有排序类型的查找函数和实现

解决方案 »

  1.   

    Where((num, index) => num == 值);
      

  2.   

    1:  没有看懂意思
    2:  由于是已按好的序列,可以采用二分查找算法. 时间复杂度  log(n).
      

  3.   

    1、好像就是简单的for计算加法吗
    2、二分法查找是最快的
      

  4.   


    if( a < b) return -1; // index error
    int sum = 0;
    for(int i = a; i <=b; ++i)
      sum += arr[i];return sum;
      

  5.   


                var array = Enumerable.Range(1, 100).ToArray();
                int index1 = 3, index2 = 5;
                var sum = array.Skip(index1).Take(index2 - index1 + 1).Sum();
                int value = 50;
                var index = Array.IndexOf(array, value);
      

  6.   

    1.已知一个固定大小的数值数组,且该数组中的数值为常数,请设计一个尽可能快速的算法计算两个下标间所有数值的和。
    --------------------
    没有比for更快的了2.已知数组Array是一个已排序的数组,给出一个指定的值要求输出该值在数组中的下标,如果该值不存在则返回-1,写出适合 所有排序类型的查找函数和实现
    --------------------
    已排序的,查找,难道不是折半最快?
      

  7.   

    Linq的基本功能,自己查查MSDN吧...
      

  8.   

    哪有你们想的那么复杂...这个跟什么类型跟什么排序都没关系,只要继承了IEnumerable<T>接口即可...例...
    var array=new int[]{1,3,5,6,7,8,9};
    //1
    var sum=array.Skip(minindex).Take(maxindex-minindex).Sum();
    //2
    var idx=array.Select((item, index)=>new{item,index}).FirstOrDefault(f=>f.item==value);
    var ridx=idx==null??-1:idx;
      

  9.   

    第一题,开一个数组记录累加,以2,7,8,16,3为例,累加为0,2,9,17,33,36,求某一段的和,比如1-3(数值为7,8,16),就用累加的两段减一下好了,33 - 2 = 31第二题,改一下BinarySearch应该就可以,支持泛型的。