C# 算法题目,求解

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

2.已知数组Array是一个已排序的数组,给出一个指定的值要求输出该值在数组中的下标,如果该值不存在则返回-1,写出适合 所有排序类型的查找函数和实现
...全文
340 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
marvels 2010-12-28
  • 打赏
  • 举报
回复
高手很多吗
绿色夹克衫 2010-12-28
  • 打赏
  • 举报
回复
第一题,开一个数组记录累加,以2,7,8,16,3为例,累加为0,2,9,17,33,36,求某一段的和,比如1-3(数值为7,8,16),就用累加的两段减一下好了,33 - 2 = 31

第二题,改一下BinarySearch应该就可以,支持泛型的。
兔子-顾问 2010-12-27
  • 打赏
  • 举报
回复
1.已知一个固定大小的数值数组,且该数组中的数值为常数,请设计一个尽可能快速的算法计算两个下标间所有数值的和。
--------------------
没有比for更快的了

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

guyoujing 2010-12-27
  • 打赏
  • 举报
回复
我也想那拿分。。。。可是上面的人都回答了。。
jeven_xiao 2010-12-27
  • 打赏
  • 举报
回复
linp
vrhero 2010-12-27
  • 打赏
  • 举报
回复
哪有你们想的那么复杂...这个跟什么类型跟什么排序都没关系,只要继承了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;
vrhero 2010-12-27
  • 打赏
  • 举报
回复
Linq的基本功能,自己查查MSDN吧...
Ryan20082009 2010-12-27
  • 打赏
  • 举报
回复
[Quote=引用 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……
[/Quote]+1
烈火蜓蜻 2010-12-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 evjen 的回复:]
1.已知一个固定大小的数值数组,且该数组中的数值为常数,请设计一个尽可能快速的算法计算两个下标间所有数值的和。

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

这个没有办法

不同类型,需要客户自己写比校函数。
如果委托可以用的话,那是可以实现
zhoupin 2010-12-27
  • 打赏
  • 举报
回复
等待高人
evjen 2010-12-27
  • 打赏
  • 举报
回复


所有排序类型的查找函数和实现
q107770540 2010-12-27
  • 打赏
  • 举报
回复
try linq
weakey 2010-12-27
  • 打赏
  • 举报
回复
弱弱的问问,这种题的回答不是到处都是吗?
麦麦_同学 2010-12-27
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lxh13133718300 的回复:]
这个我智商是不是有点底
我没看懂
[/Quote]我的智商也低啊
闲着吃菜 2010-12-27
  • 打赏
  • 举报
回复
这个我智商是不是有点底
我没看懂
claymore1114 2010-12-27
  • 打赏
  • 举报
回复

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);
rabbitlzx 2010-12-27
  • 打赏
  • 举报
回复
第二题是要写出所有的查找算法么?如果要找速度最快的应该就是折半查找了
rabbitlzx 2010-12-27
  • 打赏
  • 举报
回复

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

return sum;

三岁、就很帅 2010-12-27
  • 打赏
  • 举报
回复
int64 2010-12-27
  • 打赏
  • 举报
回复
1、好像就是简单的for计算加法吗
2、二分法查找是最快的
加载更多回复(2)

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧