Sign-up....

求一算法,看似简单的题目,做起来确很伤脑啊,求救

数组a[n]和b[n],a[n]中有一些数字,其中有些是重复的,

现要将数组a中的放入数组b中,但重复的数只能留一个,

如将1,2,1,4,2, 插入b后 变成 1,2,4, 大小顺序不要求~~

[111 byte] By [msdn] at [2007-8-14 12:43:01]
# 1 Re: 求一算法,看似简单的题目,做起来确很伤脑啊,求救

先个占个位置........

先对A排序,然后给B

B 输出..相同的就输出一个

flying_dancing at 2005-5-20 0:02:33 >
# 2 Re: 求一算法,看似简单的题目,做起来确很伤脑啊,求救

不要用排序,

因为我的本意是搜了些网址,想去掉重复的网址,排序毫无意义的

Echone902 at 2005-5-20 0:06:27 >
# 3 Re: 求一算法,看似简单的题目,做起来确很伤脑啊,求救

我觉得.从开始往B里加. B已经有的不加.没有的加在最后.

和qhfu(崩溃) 的意思差不多.

du51 at 2005-5-20 2:05:18 >
# 4 Re: 求一算法,看似简单的题目,做起来确很伤脑啊,求救

同意楼上的说法。简单。

zdy_8212 at 2005-5-20 7:18:24 >
# 5 Re: 求一算法,看似简单的题目,做起来确很伤脑啊,求救

不要用排序,

因为我的本意是搜了些网址,想去掉重复的网址,排序毫无意义的

——————————————————————————————

排下序,判断一个网址是否已经在B数组中的效率会高很多的(网址越多效率越高),那里来的“毫无意义”

最好是,不要用数组,用hash表来存储

这样查找一个网址是否已经在B数组中的代价基本是常数,而且查找可以和插入同时完成

Roaming_Sheep at 2005-5-20 9:05:19 >
# 6 Re: 求一算法,看似简单的题目,做起来确很伤脑啊,求救

to Roaming_Sheep:

hash无法保证hash值相同字符串一定就相同,还是要进行一次字符串比较,不过hash可以用来加速定位

boodweb at 2005-5-20 9:52:56 >
# 7 Re: 求一算法,看似简单的题目,做起来确很伤脑啊,求救

mark一下

hblinlin at 2005-5-20 10:08:27 >
# 8 Re: 求一算法,看似简单的题目,做起来确很伤脑啊,求救

呵呵,用stl一下子搞定

corrupt at 2005-5-20 10:23:53 >
# 9 Re: 求一算法,看似简单的题目,做起来确很伤脑啊,求救

先转换成字符串,然后处理就可以了

51365133 at 2005-5-20 10:27:45 >
# 10 Re: 求一算法,看似简单的题目,做起来确很伤脑啊,求救

to Roaming_Sheep:

hash无法保证hash值相同字符串一定就相同,还是要进行一次字符串比较,不过hash可以用来加速定位

__________________________________________________________________

我有说不用进行字符串比较吗?

Roaming_Sheep at 2005-5-20 10:49:01 >
# 11 Re: 求一算法,看似简单的题目,做起来确很伤脑啊,求救

to Roaming_Sheep(Roaming Sheep) :

我以为flying_dancing(小混混-_-) 说的排序是指对a大小的排序,网址哪来的大小~

另外,我的网址a是在类似数组的东西中的,它是通过正则表达式得来的,而b是在队列中的~,我用的语言是vb.net,用队列比较方便

昨天我自己做的有点钻牛角尖了~

:)

Echone902 at 2005-5-20 11:15:12 >
# 12 Re: 求一算法,看似简单的题目,做起来确很伤脑啊,求救

我以为flying_dancing(小混混-_-) 说的排序是指对a大小的排序,网址哪来的大小~

————————————————————————————————————————

字典序

另外,我的网址a是在类似数组的东西中的,它是通过正则表达式得来的,而b是在队列中的~,我用的语言是vb.net,用队列比较方便

————————————————————————————————————————

要方便也行啊,对A中每个网址遍历B来检查该网址是否在B中就行了

关键就是有多少条网址了,不多的话速度也能接受

Roaming_Sheep at 2005-5-20 11:23:07 >
# 13 Re: 求一算法,看似简单的题目,做起来确很伤脑啊,求救

mark

Willpro at 2005-5-20 11:26:01 >
# 14 Re: 求一算法,看似简单的题目,做起来确很伤脑啊,求救

mark

Willpro at 2005-5-20 11:28:40 >
# 15 Re: 求一算法,看似简单的题目,做起来确很伤脑啊,求救

呵呵,网址很多啊,我是在做获取链接啊,搜索网页的功能

Echone902 at 2005-5-20 11:54:32 >
# 16 Re: 求一算法,看似简单的题目,做起来确很伤脑啊,求救

可以用hash函数(hash表),存在的就不加了,实现应该简单吧

一个数组,然后一个线性hash函数进行散列

defyer007 at 2005-5-20 12:45:06 >
# 17 Re: 求一算法,看似简单的题目,做起来确很伤脑啊,求救

排序是为了提高效率,排序后可以应用一些泛型算法,例如unique_copy等

lw1a2 at 2005-5-20 13:22:21 >
# 18 Re: 求一算法,看似简单的题目,做起来确很伤脑啊,求救

CString temp,itemp,jtemp;

int a[10],b[10],i,j;

for(i=0;i<10;i++)

a[i]=rand()%10+1;

j=0;

for(i=0;i<10;i++)

{

itemp.Format("*%d*",a[i]);

if(temp.Find(itemp)==-1)

{

b[j++]=a[i];

jtemp.Format("*%d*",a[i]);

temp+=jtemp;

}

}

b[j]='\0';

AfxMessageBox(temp);

51365133 at 2005-5-20 14:27:14 >
# 19 Re: 求一算法,看似简单的题目,做起来确很伤脑啊,求救

呵呵,网址很多啊,我是在做获取链接啊,搜索网页的功能

————————————————————————————

这样说的话,你最好还是用hash……

否则B中的url很多的情况下,判断一个url是否在其中所花的时间会远远超出你想象的

Roaming_Sheep at 2005-5-20 14:31:05 >
# 20 Re: 求一算法,看似简单的题目,做起来确很伤脑啊,求救

构造一个最小堆吧,肯定比排序好

chenxixia at 2005-5-20 17:05:12 >
# 21 Re: 求一算法,看似简单的题目,做起来确很伤脑啊,求救

看来是个不小的问题啊。赫赫,我一开始还觉得很简单的,但是看看别人的建议后我觉得我还是不说了。

就up一下好了。

alienation at 2005-5-21 20:54:46 >
# 22 Re: 求一算法,看似简单的题目,做起来确很伤脑啊,求救

Echone902(阿莫)

不要用排序,

因为我的本意是搜了些网址,想去掉重复的网址,排序毫无意义的

不排序,来搜索重复的话,速度很慢

nicknide at 2005-5-21 21:22:36 >
# 23 Re: 求一算法,看似简单的题目,做起来确很伤脑啊,求救

你们都说排序,怎么排字典序???按字母大小排??

主要是我没时间搞那么多的研究了,毕设要交了,我想先实现这功能再说,优化的事有时间剩再高高~~

Echone902 at 2005-5-22 0:43:22 >
# 24 Re: 求一算法,看似简单的题目,做起来确很伤脑啊,求救

不排序就hash,要排序就用字典序,用多重的动态二叉排序树,这样对于例如第一关键字相同的,第二关键字不同的元素,又可以继续对第二关键字动态排序,查找就是nlogn。虽然比不上hash,但不用处理冲突。

fire314159 at 2005-5-22 9:40:54 >
# 25 Re: 求一算法,看似简单的题目,做起来确很伤脑啊,求救

路过学习

popo327 at 2005-5-22 13:27:02 >
# 26 Re: 求一算法,看似简单的题目,做起来确很伤脑啊,求救
用STL的话很easy的,,

把a[n]里的数insert到一个set里,就可以把重复的过滤掉了,而且是排好顺序的...

然后再放回b[n]里。

hcann at 2005-05-24 05:11:00 >

C/C++

All Classified