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);
我没看懂 --------------------编程问答-------------------- 我的智商也低啊 --------------------编程问答-------------------- 弱弱的问问,这种题的回答不是到处都是吗? --------------------编程问答-------------------- try linq --------------------编程问答-------------------- +1 --------------------编程问答-------------------- linp --------------------编程问答-------------------- 我也想那拿分。。。。可是上面的人都回答了。。 --------------------编程问答-------------------- 1.已知一个固定大小的数值数组,且该数组中的数值为常数,请设计一个尽可能快速的算法计算两个下标间所有数值的和。
--------------------
没有比for更快的了
2.已知数组Array是一个已排序的数组,给出一个指定的值要求输出该值在数组中的下标,如果该值不存在则返回-1,写出适合 所有排序类型的查找函数和实现
--------------------
已排序的,查找,难道不是折半最快?
--------------------编程问答--------------------
所有排序类型的查找函数和实现 --------------------编程问答-------------------- 等待高人 --------------------编程问答--------------------
这个没有办法
不同类型,需要客户自己写比校函数。
如果委托可以用的话,那是可以实现 --------------------编程问答-------------------- Linq的基本功能,自己查查MSDN吧... --------------------编程问答-------------------- 哪有你们想的那么复杂...这个跟什么类型跟什么排序都没关系,只要继承了IEnumerable<T>接口即可...例...
var array=new int[]{1,3,5,6,7,8,9};--------------------编程问答-------------------- 第一题,开一个数组记录累加,以2,7,8,16,3为例,累加为0,2,9,17,33,36,求某一段的和,比如1-3(数值为7,8,16),就用累加的两段减一下好了,33 - 2 = 31
//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;
第二题,改一下BinarySearch应该就可以,支持泛型的。 --------------------编程问答-------------------- 高手很多吗
补充:.NET技术 , C#