C#求数组中的最大值和最小值

同时找出数组中的最大值和最小值!求高效算法!普通for遍历整个数组比较max再赋值覆盖的别来。解出再送100!!!:时间空间复杂度为2*S以下的就行***********... 同时找出数组中的最大值和最小值!
求高效算法!
普通for遍历整个数组比较max再赋值覆盖的别来。
解出再送100!!!

时间空间复杂度为2*S以下的就行

*******************************
catm3 - 千总 五级
笑。你不会就代表别人不会?自己菜不会就乖乖到边上,别丢人可好?
展开
 我来答
catm3
2008-11-08 · TA获得超过511个赞
知道小有建树答主
回答量:234
采纳率:100%
帮助的人:360万
展开全部
我的楼主啊,你说得轻巧?我问你,一个没排过虚的数组,不访问其中每个元素,你怎么知道哪个大哪个小?难道你是神仙?拍拍脑瓜就猜出来了?本来这就是O(n)的问题,你要搞其他的,不去猜还不是得看看每个元素长什么样?噢,如果你是神仙的话是可以的。

-----------------------------------------------------------

=O(n)类算法提出者 (其中做了两边的也归入这类)

苍狼HELL - 经理 五级
0o圈圈o0爱 - 试用期 一级
luoxk11 - 经理 四级
九成完美 - 见习魔法师 三级
lwaipo - 助理 二级
回答者:匿名 10-27 09:39
Loro5 - 经理 四级
linux7985 - 千总 五级
cailin066 - 助理 三级

=O(nLogn)>O(n)类算法提出者 (凡是包含排序的都在这类,包括排序超过O(nLogn)的)
lgopen - 助理 二级
cpudotorg - 高级经理 六级
zs_static_main - 试用期 一级
simphone - 试用期 一级
xihandesigner - 举人 四级

至少说明我还是很正常的

楼主世外高人,不敢恭维(难道受了计算字符串长度的算法的干扰?哈哈,那就计算UTF128(如果出来了的话)格式字符串长度看看吧)
百度网友d8cd15553
2008-10-30 · TA获得超过149个赞
知道答主
回答量:56
采纳率:100%
帮助的人:70.3万
展开全部
对于这种问题,c#自带的方法很多且简单,我相信楼主很熟悉了,所需要的是纯数组的最优解决方案.我采用的是二分查找法:
static void Main(string[] args)
{
int[] x = new int[] { 42, 13, 1, 10, 126, 78, 12, 39, 13 };
Console.WriteLine(GetMax(x,0,x.Length-1));
Console.Read();
}

static int GetMax(int[] x,int i,int j)
{
if (i ==j) return x[i];
else
{
int fore = GetMax(x, i, (j + i - 1) / 2);
int last = GetMax(x, (j + i + 1) / 2, j);
return fore > last ? fore : last;
}
}
这个是通过递归来求最大值,它的时间复杂度是Log2N(2是底数),如果要得到最小值,那么把方法的大于号换成小于号即可,这时候总的时间复杂度是2log2N,当然也可以采用快排,先把数组排序,再取最大最小值,它的时间复杂度只有log2N,但是别忘了快排需要临时空间,还有互换带来的空间开销,所以它存在空间复杂度.楼主可以根据情况适当选择.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6ca0ba3
2008-10-25 · TA获得超过1489个赞
知道小有建树答主
回答量:360
采纳率:0%
帮助的人:577万
展开全部
int[] a = new int[] {25,58,47,58,48,488,45,10,1 };
int min = 0;
for (int i = 0; i <= a.Length-1; i++)
{
for (int j = a.Length-1; j >= 0; j--)
{
if (a[i] < a[j])
{
min = a[i];
}
else
{
min = a[j];
}
}
}

Console.WriteLine(min);
Console.Read();

最大值的道理一样。
希望楼主满意。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
九成完美
2008-10-25 · TA获得超过387个赞
知道小有建树答主
回答量:350
采纳率:0%
帮助的人:255万
展开全部
很简单 你可使用ArrayList

int[] arr = {2,4,5,6,6,55,66,89,105,669,569 };
ArrayList list = new ArrayList(arr);
list.Sort();
int min = Convert.ToInt32(list[0]);
int max = Convert.ToInt32(list[list.Count - 1]);
Console.WriteLine("最大" + max +" 最小:"+min);

记得导入命名空间
using System.Collections;
^-^ 祝顺利
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
linux7985
2008-11-01 · TA获得超过1230个赞
知道小有建树答主
回答量:501
采纳率:0%
帮助的人:435万
展开全部
如果你的数组没有规律,很抱歉,你必须,至少(当然也是最多)一次就可以搞定

设定 A就是待找的数组

int min=int.MaxValue,max=int.MinValue;
for ( int i = 0; i < A.Length; i++ )
{
if ( min > A[i] ) min = A[i];
if ( max < A[i] ) max = A[i];
}

偶的这个时间复杂度就是一个 O(n) 还不是 O(2*n)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(16)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式