求排序问题

求排序问题

我想对一组上百亿的数(数值型)进行排序,感觉的时间上不可行,高手指教啊!
我不知道perl内部用什么算法实现排序的,如果赶紧效率不高,恐怕得考虑自己写代码了.


QUOTE:
原帖由 converse 于 2008-7-22 17:10 发表
我不知道perl内部用什么算法实现排序的,如果赶紧效率不高,恐怕得考虑自己写代码了.

perldoc sort


QUOTE:
原帖由 flw 于 2008-7-22 17:15 发表

perldoc sort

测试了一下,对一个10,000,000的记录,先对其读取放入数组,然后对数值排序,在读取放入数值方面花了259秒,排序上花了26秒,看来大多数时间花在了读取上面,有什么方法优化读取啊。
你要排序的数是什么样的啊,给几个典型的例子看看?


QUOTE:
原帖由 cobrawgl 于 2008-7-22 18:38 发表
你要排序的数是什么样的啊,给几个典型的例子看看?

文件格式是这样的,这只是文件的前几行,文件很大,记录超过百亿条记录,要根据pvalue这一列(最后一列)对文件排序(从小到大)

CHR     SNP     AL1     AL2     FREQ1   TRAIT   EFFECT  SE      H2      LOD     PVALUE
22      rs738829        G       A       0.802   1       -0.017  0.033   0.711   0.062   0.5943
22      rs915674        G       A       0.871   1       0.005   0.035   0.046   0.005   0.8799
22      rs915675        C       A       0.802   1       0.003   0.033   0.015   0.001   0.9381
22      rs915677        G       A       0.955   1       0.016   0.055   0.161   0.018   0.7714
22      rs4389403       G       A       0.912   1       0.010   0.041   0.111   0.012   0.8107
22      rs5746356       C       T       0.759   1       0.029   0.031   2.200   0.183   0.3592
22      rs10154731      G       A       0.909   1       0.015   0.041   0.281   0.030   0.7092
22      rs11913813      C       G       0.955   1       -0.056  0.055   2.006   0.228   0.3053
22      rs2260460       C       T       0.954   1       0.019   0.055   0.245   0.027   0.7226


QUOTE:
原帖由 cobrawgl 于 2008-7-22 18:38 发表
你要排序的数是什么样的啊,给几个典型的例子看看?

文件格式是这样的,这只是文件的前几行,文件很大,记录超过百亿条记录,要根据pvalue这一列(最后一列)对文件排序(从小到大)

CHR     SNP     AL1     AL2     FREQ1   TRAIT   EFFECT  SE      H2      LOD     PVALUE
22      rs738829        G       A       0.802   1       -0.017  0.033   0.711   0.062   0.5943
22      rs915674        G       A       0.871   1       0.005   0.035   0.046   0.005   0.8799
22      rs915675        C       A       0.802   1       0.003   0.033   0.015   0.001   0.9381
22      rs915677        G       A       0.955   1       0.016   0.055   0.161   0.018   0.7714
22      rs4389403       G       A       0.912   1       0.010   0.041   0.111   0.012   0.8107
22      rs5746356       C       T       0.759   1       0.029   0.031   2.200   0.183   0.3592
22      rs10154731      G       A       0.909   1       0.015   0.041   0.281   0.030   0.7092
22      rs11913813      C       G       0.955   1       -0.056  0.055   2.006   0.228   0.3053
22      rs2260460       C       T       0.954   1       0.019   0.055   0.245   0.027   0.7226
man sort
兄弟, 建议用C吧. 光读写文件, 就玩死你 了.  排序倒还在其次.


QUOTE:
原帖由 q1208c 于 2008-7-22 23:08 发表
兄弟, 建议用C吧. 光读写文件, 就玩死你 了.  排序倒还在其次.

楼主的情况你觉的用 C 和 Perl 的区别会很大么?