首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
Java
Web 开发
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
取消引用
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
最近遇到一个笔试题,求高手解决!
[已结贴,结贴人:nisersent]
加为好友
发送私信
在线聊天
nisersent
一个人要坚强!默沉-沉默-默沉-莫沉
等级:
可用分等级:
中农
总技术分:
454
总技术分排名:
34762
揭贴率:
100.00%
发表于:
2008-06-04 16:04:40
楼主
问题如下:
10亿个浮点数中,找出最大的10个浮点数,写出一个高性能算法。
求解。
问题点数:
20
回复次数:
287
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
velic
velic
等级:
可用分等级:
长工
总技术分:
5
总技术分排名:
247828
发表于:
2008-06-04 16:07:14
1
楼 得分:
0
占个坐先
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
nisersent
一个人要坚强!默沉-沉默-默沉-莫沉
等级:
可用分等级:
中农
总技术分:
454
总技术分排名:
34762
发表于:
2008-06-04 16:28:57
2
楼 得分:
0
帮忙解决一下,很严重的!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
norwolfli
傻瓜程序员都能写出机器认识的代码,关键你要写出人能认识的代码。
等级:
可用分等级:
富农
总技术分:
3281
总技术分排名:
6488
发表于:
2008-06-04 17:16:56
3
楼 得分:
0
除了循环一遍,别的想不出来.
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
No_End_Point
哦
等级:
可用分等级:
富农
总技术分:
610
总技术分排名:
30706
发表于:
2008-06-04 17:23:23
4
楼 得分:
0
不知道10亿个这个条件有没有暗示了什么
循环加二分法插入
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
numen_wlm
两小儿辩日
等级:
可用分等级:
掌柜
总技术分:
3883
总技术分排名:
5359
发表于:
2008-06-04 17:48:36
5
楼 得分:
0
最方便的办法:
放进Oracle数据库里面,desc排序,取前十条记录就OK了,速度绝对最快。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jastby
My Java Forum:www.javawind.net
等级:
可用分等级:
富农
总技术分:
2786
总技术分排名:
7758
发表于:
2008-06-04 17:50:54
6
楼 得分:
0
引用 5 楼 numen_wlm 的回复:
最方便的办法:
放进Oracle数据库里面,desc排序,取前十条记录就OK了,速度绝对最快。
把数据插进去 费时不?
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
No_End_Point
哦
等级:
可用分等级:
富农
总技术分:
610
总技术分排名:
30706
发表于:
2008-06-04 17:56:09
7
楼 得分:
0
晕,你插入10亿条到数据库看看!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
yds204
yds204
等级:
可用分等级:
短工
总技术分:
40
总技术分排名:
137768
发表于:
2008-06-04 18:00:16
8
楼 得分:
0
10亿个0.0f
不用算法
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
javabaidu
等级:
可用分等级:
长工
总技术分:
0
总技术分排名:
313963
发表于:
2008-06-04 18:11:35
9
楼 得分:
0
把他们排一下序,然后取前10个,或后10个
排序算法不好写,可以看一下数据结构与算法,书上也没见有什么高效率排序算法。
java 开发群 62873155
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
ilysony
for Java
等级:
可用分等级:
富农
总技术分:
1255
总技术分排名:
17637
发表于:
2008-06-04 19:26:52
10
楼 得分:
0
关注
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zings
zings
等级:
可用分等级:
长工
总技术分:
7
总技术分排名:
247828
发表于:
2008-06-04 19:34:54
11
楼 得分:
0
我也不会解决,期待高手指点~~
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
kqw1981
草鸡恐龙克赛号
等级:
可用分等级:
中农
总技术分:
491
总技术分排名:
32851
发表于:
2008-06-04 19:41:37
12
楼 得分:
0
关注
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
bluesnaker
等级:
可用分等级:
乞丐
总技术分:
5
总技术分排名:
247828
发表于:
2008-06-04 19:53:25
13
楼 得分:
0
放到list中然后用Array.sort(list)
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
numen_wlm
两小儿辩日
等级:
可用分等级:
掌柜
总技术分:
3883
总技术分排名:
5359
发表于:
2008-06-04 19:53:45
14
楼 得分:
0
引用 7 楼 No_End_Point 的回复:
晕,你插入10亿条到数据库看看!
怎么了,难道不能插入10亿条数据到数据库吗?
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
numen_wlm
两小儿辩日
等级:
可用分等级:
掌柜
总技术分:
3883
总技术分排名:
5359
发表于:
2008-06-04 19:56:44
15
楼 得分:
0
引用 6 楼 jastby 的回复:
引用 5 楼 numen_wlm 的回复:
最方便的办法:
放进Oracle数据库里面,desc排序,取前十条记录就OK了,速度绝对最快。
把数据插进去 费时不?
既然要用程序来做,那么可以肯定的是你肯定要首先准备10亿条数据用于读取,那么这10亿条数据准备到什么地方去?准备这10亿条数据费时不?
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
xwj1003
积善行德
等级:
可用分等级:
掌柜
总技术分:
2366
总技术分排名:
8991
发表于:
2008-06-04 22:13:31
16
楼 得分:
0
说白了就是排序算法,难道还有比快速排序更快的排序算法吗?
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jamo
WTF == What The Fuck
等级:
可用分等级:
富农
总技术分:
850
总技术分排名:
21998
发表于:
2008-06-04 23:19:09
17
楼 得分:
0
楼上对。
或者把十亿个数逐个 alert 出来, 一直点下去, 记住哪十个最大, 哈哈哈
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
FLY_loveForever
欲执牛耳的初出茅庐小辈
等级:
可用分等级:
长工
总技术分:
0
总技术分排名:
313963
发表于:
2008-06-04 23:58:38
18
楼 得分:
0
引用 11 楼 zings 的回复:
我也不会解决,期待高手指点~~
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
timsoa
笨笨
等级:
可用分等级:
短工
总技术分:
0
总技术分排名:
313963
发表于:
2008-06-05 00:23:11
19
楼 得分:
0
用
冒泡
排序!
很烦琐,很高效!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
KK3K2005
等级:
可用分等级:
富农
总技术分:
2229
总技术分排名:
9662
发表于:
2008-06-05 00:31:24
20
楼 得分:
1
分段排序不知道行不行
A.读取M*10条记录 (M>1) 排序取出最大的10条(排序算法根据每次读取的数量选择) 依大到小放进List[M*10]
B.List放满就排序 10条最大在最前面
C.还有记录就 继续 A 不过List开始的10条保留(从List[10]开始插入)
D.List 开始 10条是最大的
以上是单线程
在List填充了开始10条后
开M-1个线程(每个线程执行A步骤填充List[(1...M-1)*10])
然后List排序一次
不知道会不会快点
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
wsh19860510
dolica
等级:
可用分等级:
短工
总技术分:
0
总技术分排名:
313963
发表于:
2008-06-05 00:41:36
21
楼 得分:
0
10亿个数貌似list里也放不下吧
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
xiaoqingao
小白
等级:
可用分等级:
贫农
总技术分:
37
总技术分排名:
143140
发表于:
2008-06-05 01:13:08
22
楼 得分:
0
我觉得可以试试分组循环二分插入法 嘎嘎
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
Ren20080808
我是油條-努力在社會中煎熬-等待變老油條的那一天-美女下面有點鹹
等级:
可用分等级:
中农
总技术分:
95
总技术分排名:
93054
发表于:
2008-06-05 07:53:21
23
楼 得分:
0
只想到排序
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
AwL_1124
A wonderful Leaning
等级:
可用分等级:
中农
总技术分:
432
总技术分排名:
38311
发表于:
2008-06-05 08:43:54
24
楼 得分:
0
期待解决·
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
fuyou001
fuyou001
等级:
可用分等级:
中农
总技术分:
1762
总技术分排名:
12019
发表于:
2008-06-05 08:50:05
25
楼 得分:
0
关注...
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
w503426115
菜虫爱上鸟
等级:
可用分等级:
短工
总技术分:
0
总技术分排名:
313963
发表于:
2008-06-05 08:52:56
26
楼 得分:
0
引用 18 楼 FLY_loveForever 的回复:
引用 11 楼 zings 的回复:
我也不会解决,期待高手指点~~
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
Cuiyl198254
cc
等级:
可用分等级:
长工
总技术分:
1
总技术分排名:
296708
发表于:
2008-06-05 08:55:28
27
楼 得分:
1
确切的说,排序算法是不错,最好的时间复杂度是n*Log(n),对于本问题,大概需要9*10^9次比较,不过牵扯的元素移动也比较多。
可以考虑设置1个10元素数组,用前10个值来初始化,然后挨个读取后续值,如果发现比其中的最小元素都大,那么把这个最小元素替换掉,者只需要浏览一边数据即可,时间复杂度10*10^9,这个的优点是不需要排序算法的元素移动量
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
malligator
不能再整天泡在CSDN里了!
等级:
可用分等级:
富农
总技术分:
7496
总技术分排名:
2662
发表于:
2008-06-05 08:56:22
28
楼 得分:
0
我觉得定义一个双向链表,遍历一遍就可以了:
对于每一个数,按从大到小的顺序插入到链表中;若链表大小大于10,删除尾结点。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
malligator
不能再整天泡在CSDN里了!
等级:
可用分等级:
富农
总技术分:
7496
总技术分排名:
2662
发表于:
2008-06-05 09:07:27
29
楼 得分:
0
按从大到小的顺序插入到链表中
->可优化:先拿尾结点数比较一下,若是不大于就可以PASS了
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
meejoe
等级:
可用分等级:
掌柜
总技术分:
0
总技术分排名:
313963
发表于:
2008-06-05 09:07:46
30
楼 得分:
0
外排序怎么做?关心一下
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zfl110
fly
等级:
可用分等级:
中农
总技术分:
38
总技术分排名:
143140
发表于:
2008-06-05 09:28:24
31
楼 得分:
0
关注
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zqrqq
zqrain
等级:
可用分等级:
富农
总技术分:
9121
总技术分排名:
2089