| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 632 人关注过本帖
标题:寻求一个最优算法
只看楼主 加入收藏
穿云裂
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-3-24
收藏
 问题点数:0 回复次数:8 
寻求一个最优算法

有100个整数,数值为从1到一百,现假设已经随机的选99个数赋值给了一个长度为99的数组,问如何求出剩下的那个数?哪位高手给个算法,要优化的。

搜索更多相关主题的帖子: 算法 
2006-03-24 19:29
genuise
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-6-13
收藏
得分:0 
不知道 用5050 - 全部数组数据的求和 ,算不算

复杂度 :求和
2006-06-13 14:00
liubaoen
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:104
专家分:117
注 册:2006-6-12
收藏
得分:0 
刚才这楼真是经典的算法,佩服!!!!
2006-06-13 17:58
wdz555
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2005-10-9
收藏
得分:0 

个人愚见:
如果数组中没有重复 排序先 用循环!在循环中套用if语句!
例:(比较部分)
for(i=1;i<100;i++)
{
if(arry[i]+1!=arry[i+1])
{
Console.Write(arry[i+1]);
}
}

[此贴子已经被作者于2006-6-13 20:48:03编辑过]


2006-06-13 20:47
ytyt654
Rank: 2
等 级:新手上路
威 望:4
帖 子:195
专家分:0
注 册:2006-2-13
收藏
得分:0 

bool[] arrBool = new bool[101]; // 建立一个存在标志数组,各个元素的默认值为false
for (int i = 0; i < arrIntNums99.Length; i++) //arrIntNums99为长度为99的整型数组
{
arrBool[arrIntNums99[i]] = true; // 把标志位设置为true
}
for (int i = 1; i < arrBool.Length; i++)
{
if (!arrBool[i])
{
MessageBox.Show(i.ToString);
break;
}
}


该算法时间复杂度为O(n)

二楼的算法的确快

[此贴子已经被作者于2006-6-15 17:41:08编辑过]


2006-06-14 08:11
liubaoen
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:104
专家分:117
注 册:2006-6-12
收藏
得分:0 
如果楼主的问题只是求出剩下的那个数值的话,个人认为第二楼的算法最好!
如果要把随机选取也考虑进去,有一种可以参考的算法,就是把数组顺序随机打乱,然后按顺序取,取出的数值就是随机的顺序了,一直取99个数,那么剩下的数值就不用求了,就是那个下标为99的那个了呀,个人拙见!!!!

[此贴子已经被作者于2006-6-14 22:13:46编辑过]

2006-06-14 08:39
wwqiang
Rank: 1
等 级:新手上路
帖 子:78
专家分:0
注 册:2006-5-1
收藏
得分:0 

我也觉得是二楼的算法比较经典,哈哈


2006-06-14 14:24
沐海思潮
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-6-7
收藏
得分:0 

二楼的算法的确是经典的不能不再经典了,而且相当快啊


2006-06-14 20:38
a7471717
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-6-15
收藏
得分:0 
你们说2楼的经典 把程序写出来 我不会

2006-06-15 14:12
快速回复:寻求一个最优算法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021807 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved