免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: x4ulocca
打印 上一主题 下一主题

[算法] 讨论一个算法 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-03-20 15:49 |只看该作者
空间O(n)的话可以维持一个hash table啊,顺序scan这个数组,把出现过的数字加入这个hash表。当碰到已经加过的数字就返回,时间O(n)。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
12 [报告]
发表于 2007-03-20 15:56 |只看该作者
原帖由 emacsnw 于 2007-3-20 15:49 发表
空间O(n)的话可以维持一个hash table啊,顺序scan这个数组,把出现过的数字加入这个hash表。当碰到已经加过的数字就返回,时间O(n)。

其实还可以 O(1),插入时 scan 这个数组,把重复的那一对放到数组的最前面。取的时候只需要判断数组开头的两个数是否一样就行了。一样就返回,不一样就说明全都不重复。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
13 [报告]
发表于 2007-03-20 16:32 |只看该作者
原帖由 flw 于 2007-3-20 15:56 发表

其实还可以 O(1),插入时 scan 这个数组,把重复的那一对放到数组的最前面。取的时候只需要判断数组开头的两个数是否一样就行了。一样就返回,不一样就说明全都不重复。

没看太懂,能不能说得明白些?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
14 [报告]
发表于 2007-03-20 16:34 |只看该作者
原帖由 lenovo 于 2007-3-20 16:32 发表

没看太懂,能不能说得明白些?

简而言之,就是把想要的数据提前准备好,然后等用的时候直接拿来用,就是 O(1) 了。
linux 2.6 著名的 O(1) 调度算法就是这么标榜自己的。
另外,几乎所有的老板做事效率都是 O(1) 的,因为 O(n^3) 那是员工的复杂度。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
15 [报告]
发表于 2007-03-20 16:38 |只看该作者
原帖由 flw 于 2007-3-20 16:34 发表

简而言之,就是把想要的数据提前准备好,然后等用的时候直接拿来用,就是 O(1) 了。
linux 2.6 著名的 O(1) 调度算法就是这么标榜自己的。
另外,几乎所有的老板做事效率都是 O(1) 的,因为 O(n^3) 那是员工的 ...

这个意思呀,那这个“想要的数据提前准备好”不算在内么?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
16 [报告]
发表于 2007-03-20 16:41 |只看该作者
原帖由 lenovo 于 2007-3-20 16:38 发表

这个意思呀,那这个“想要的数据提前准备好”不算在内么?

对。因为那个不占用检索时间。只占用插入时间。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
17 [报告]
发表于 2007-03-20 16:46 |只看该作者
原帖由 flw 于 2007-3-20 16:41 发表

对。因为那个不占用检索时间。只占用插入时间。

这个,有点晕。
这样吧,随便给一个数组
int a[] = {1, 3, 5, 9, 5, 10, 11, 30, 2, 13}
flw你能给我一个具体的O(1)算法么?
伪码也行,我脑袋糊了。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
18 [报告]
发表于 2007-03-20 16:48 |只看该作者
原帖由 lenovo 于 2007-3-20 16:46 发表

这个,有点晕。
这样吧,随便给一个数组
int a[] = {1, 3, 5, 9, 5, 10, 11, 30, 2, 13}
flw你能给我一个具体的O(1)算法么?
伪码也行,我脑袋糊了。

你没事干随便给干什么?
你既然要给,就给整齐点不行吗?

论坛徽章:
0
19 [报告]
发表于 2007-03-20 16:53 |只看该作者
flw的说法等价于如果给我一个操作系统的代码,我也可以写时间复杂度为O(1)的操作系统,调用它就行了.
这样有意义吗?
另外hash table不用耗时间的说?还O(n),hash table你每次加入一个数据就要进行一次排序,不要时间?
讨论算法的时候用成品还要说成品是不计算成本的,脑壳有包!

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
20 [报告]
发表于 2007-03-20 16:54 |只看该作者
原帖由 blackuhlan 于 2007-3-20 16:53 发表
flw的说法等价于如果给我一个操作系统的代码,我也可以写时间复杂度为O(1)的操作系统,调用它就行了.
这样有意义吗?
另外hash table不用耗时间的说?还O(n),hash table你每次加入一个数据就要进行一次排序,不要时间 ...

恭喜你!
等着被扣分吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP