当前位置:编程学习 > C#/ASP.NET >>

C# 算法题目,求解

1.已知一个固定大小的数值数组,且该数组中的数值为常数,请设计一个尽可能快速的算法计算两个下标间所有数值的和。

2.已知数组Array是一个已排序的数组,给出一个指定的值要求输出该值在数组中的下标,如果该值不存在则返回-1,写出适合 所有排序类型的查找函数和实现 --------------------编程问答-------------------- Where((num, index) => num == 值);
--------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 1:  没有看懂意思
2:  由于是已按好的序列,可以采用二分查找算法. 时间复杂度  log(n). --------------------编程问答-------------------- 1、好像就是简单的for计算加法吗
2、二分法查找是最快的 --------------------编程问答-------------------- --------------------编程问答--------------------

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

return sum;

--------------------编程问答-------------------- 第二题是要写出所有的查找算法么?如果要找速度最快的应该就是折半查找了 --------------------编程问答--------------------

            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);
--------------------编程问答-------------------- 这个我智商是不是有点底
我没看懂 --------------------编程问答--------------------
引用 10 楼 lxh13133718300 的回复:
这个我智商是不是有点底
我没看懂
我的智商也低啊 --------------------编程问答-------------------- 弱弱的问问,这种题的回答不是到处都是吗? --------------------编程问答-------------------- try  linq --------------------编程问答--------------------
引用 9 楼 claymore1114 的回复:
C# code

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


            i……
+1 --------------------编程问答-------------------- linp  --------------------编程问答-------------------- 我也想那拿分。。。。可是上面的人都回答了。。 --------------------编程问答-------------------- 1.已知一个固定大小的数值数组,且该数组中的数值为常数,请设计一个尽可能快速的算法计算两个下标间所有数值的和。
--------------------
没有比for更快的了

2.已知数组Array是一个已排序的数组,给出一个指定的值要求输出该值在数组中的下标,如果该值不存在则返回-1,写出适合 所有排序类型的查找函数和实现
--------------------
已排序的,查找,难道不是折半最快?

--------------------编程问答--------------------

所有排序类型的查找函数和实现 --------------------编程问答-------------------- 等待高人 --------------------编程问答--------------------
引用楼主 evjen 的回复:
1.已知一个固定大小的数值数组,且该数组中的数值为常数,请设计一个尽可能快速的算法计算两个下标间所有数值的和。

2.已知数组Array是一个已排序的数组,给出一个指定的值要求输出该值在数组中的下标,如果该值不存在则返回-1,写出适合 所有排序类型的查找函数和实现


这个没有办法

不同类型,需要客户自己写比校函数。
如果委托可以用的话,那是可以实现 --------------------编程问答-------------------- Linq的基本功能,自己查查MSDN吧... --------------------编程问答-------------------- 哪有你们想的那么复杂...这个跟什么类型跟什么排序都没关系,只要继承了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;
--------------------编程问答-------------------- 第一题,开一个数组记录累加,以2,7,8,16,3为例,累加为0,2,9,17,33,36,求某一段的和,比如1-3(数值为7,8,16),就用累加的两段减一下好了,33 - 2 = 31

第二题,改一下BinarySearch应该就可以,支持泛型的。 --------------------编程问答-------------------- 高手很多吗
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,