C#求数组中的最大值和最小值
同时找出数组中的最大值和最小值!求高效算法!普通for遍历整个数组比较max再赋值覆盖的别来。解出再送100!!!:时间空间复杂度为2*S以下的就行***********...
同时找出数组中的最大值和最小值!
求高效算法!
普通for遍历整个数组比较max再赋值覆盖的别来。
解出再送100!!!
:
时间空间复杂度为2*S以下的就行
*******************************
catm3 - 千总 五级
笑。你不会就代表别人不会?自己菜不会就乖乖到边上,别丢人可好? 展开
求高效算法!
普通for遍历整个数组比较max再赋值覆盖的别来。
解出再送100!!!
:
时间空间复杂度为2*S以下的就行
*******************************
catm3 - 千总 五级
笑。你不会就代表别人不会?自己菜不会就乖乖到边上,别丢人可好? 展开
18个回答
展开全部
我的楼主啊,你说得轻巧?我问你,一个没排过虚的数组,不访问其中每个元素,你怎么知道哪个大哪个小?难道你是神仙?拍拍脑瓜就猜出来了?本来这就是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(如果出来了的话)格式字符串长度看看吧)
-----------------------------------------------------------
=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(如果出来了的话)格式字符串长度看看吧)
展开全部
对于这种问题,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,但是别忘了快排需要临时空间,还有互换带来的空间开销,所以它存在空间复杂度.楼主可以根据情况适当选择.
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,但是别忘了快排需要临时空间,还有互换带来的空间开销,所以它存在空间复杂度.楼主可以根据情况适当选择.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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();
最大值的道理一样。
希望楼主满意。
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();
最大值的道理一样。
希望楼主满意。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
很简单 你可使用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;
^-^ 祝顺利
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;
^-^ 祝顺利
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果你的数组没有规律,很抱歉,你必须,至少(当然也是最多)一次就可以搞定
设定 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)
设定 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)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询