R raulcool Unregistered / Unconfirmed GUEST, unregistred user! 2008-05-30 #1 我这学期刚开始学习delphi编程,现在要做一个大批量数据排序的作业,老师先给我们提供一个方法:将数据分为若干分,分别排序后再合并。 希望大家能提供一个更加高效的办法,只要有大致的思路就行。本人是初学者,请多多关照!
我这学期刚开始学习delphi编程,现在要做一个大批量数据排序的作业,老师先给我们提供一个方法:将数据分为若干分,分别排序后再合并。 希望大家能提供一个更加高效的办法,只要有大致的思路就行。本人是初学者,请多多关照!
R raulcool Unregistered / Unconfirmed GUEST, unregistred user! 2008-05-30 #3 上的是delphi的课,当然要用delphi编啦!!
F fas2000 Unregistered / Unconfirmed GUEST, unregistred user! 2008-05-30 #4 这个不是有很多排序法吗/ 啥冒泡排序法等等 要是我啊,最快的方法就是先导入到数据库中,然后再order by 就出来了,那个速度 比啥都快
R raulcool Unregistered / Unconfirmed GUEST, unregistred user! 2008-05-31 #5 就目前的计算机速度而言确实很快,但这题目的目的显然不是这个啊!!重要的是想出一种新方法!
L lover4936 Unregistered / Unconfirmed GUEST, unregistred user! 2008-05-31 #7 其实编程的时候很多的方法都来自于现实中,你可以用多线程处理,你就想一下你要打牌的时候进行分牌怎么分的!我是指排序的分牌 你可以这样子实现做一个数组,但是数组的下标的数值不是按差值一来排列,比如我们一般的时候都是A[1],A[2],你可以设成A[1] ,A[10],用多线程进行插值,如果有数字介于A[1],A[10].之间的,你不要将这个数值放到A[2]里放到10-1/5取整的下标里,放不在再进行扩大,至最后的话再将无数值的去掉,整合,这种方法只适合于数据较多的排序进行。
其实编程的时候很多的方法都来自于现实中,你可以用多线程处理,你就想一下你要打牌的时候进行分牌怎么分的!我是指排序的分牌 你可以这样子实现做一个数组,但是数组的下标的数值不是按差值一来排列,比如我们一般的时候都是A[1],A[2],你可以设成A[1] ,A[10],用多线程进行插值,如果有数字介于A[1],A[10].之间的,你不要将这个数值放到A[2]里放到10-1/5取整的下标里,放不在再进行扩大,至最后的话再将无数值的去掉,整合,这种方法只适合于数据较多的排序进行。
G gulang Unregistered / Unconfirmed GUEST, unregistred user! 2008-05-31 #8 是让你们想新的算法还是可以借鉴典型的排序算法?如果想新的高效率算法的话,难啊,如果真能想出比现在排序算法还好的来,你可以直接进中科院了。[]祝你好运!
R raulcool Unregistered / Unconfirmed GUEST, unregistred user! 2008-05-31 #9 能不能把多线程的方法说的详细点,我是初学者,比较难理解·····
R raulcool Unregistered / Unconfirmed GUEST, unregistred user! 2008-06-01 #10 还有一个问题,就是要提高文件合并的效率,如果把数据分为十个文件,其中的九个已经合并好了,当要和最后一个文件合并的时候,如果按照普通的方法,效率会很低,有没有可以提高效率的办法???多谢了!!
L lps Unregistered / Unconfirmed GUEST, unregistred user! 2008-06-01 #11 楼主如果学过《数据结构》,建议找出你的教材来复习一下。如果没有学过赶紧去找本书看一下(推荐清华大学 严蔚敏的,经典啊!) 如此,比你在这问一百天都强
J jenhon Unregistered / Unconfirmed GUEST, unregistred user! 2008-06-01 #12 看半天,都不知道楼主需要什么? 要程序?还是要 算法? 排序这么经典的东西,该有的算法也已经有了,看书就行,况且:“师先给我们提供一个方法:将数据分为若干分,分别排序后再合并。”这个算法已经规定死了吧? 我建议你还是问比较详细点好,比如,我打算用什么什么算法实现什么内容的排序,给些语句之类的问题,还是比较多人乐意回答的,毕竟要求比较具体、详细。
看半天,都不知道楼主需要什么? 要程序?还是要 算法? 排序这么经典的东西,该有的算法也已经有了,看书就行,况且:“师先给我们提供一个方法:将数据分为若干分,分别排序后再合并。”这个算法已经规定死了吧? 我建议你还是问比较详细点好,比如,我打算用什么什么算法实现什么内容的排序,给些语句之类的问题,还是比较多人乐意回答的,毕竟要求比较具体、详细。
R raulcool Unregistered / Unconfirmed GUEST, unregistred user! 2008-06-02 #13 我想要的就是有没有比老师提供的方法更好的排序方法,还有就是在文件合并是能不能更高效???
J jenhon Unregistered / Unconfirmed GUEST, unregistred user! 2008-06-02 #15 排序的方法各有千秋,没有最好的只有最适合的。 如果要找出真正合适的算法,可能还要结合你的具体情况:数据的数值范围,分布情况,重复的频繁性..... 不过楼上也有人说了,如果能找到一个新的算法有效的,就算是应用范围有限,也都估计能进中科院了,因为估计你能想到的,前人都想到了。
排序的方法各有千秋,没有最好的只有最适合的。 如果要找出真正合适的算法,可能还要结合你的具体情况:数据的数值范围,分布情况,重复的频繁性..... 不过楼上也有人说了,如果能找到一个新的算法有效的,就算是应用范围有限,也都估计能进中科院了,因为估计你能想到的,前人都想到了。
M mosker Unregistered / Unconfirmed GUEST, unregistred user! 2008-09-17 #17 可以考虑使用MMX指令进行单指令多数据流处理,排续算法还是用快速排序法好了. MMX指令应用请参考我的blog... .http://blog.csdn.net/codegame
L levi Unregistered / Unconfirmed GUEST, unregistred user! 2008-09-17 #18 楼主的问题太笼统了, 大批量数据的排序, 要加快速度,你指的是提高程序运行的效率,还是提高算法的效率? 目前来讲,具有可比性的只有算法效率, 程序的运行效率除了算法效率外,还跟硬件有关。
N nicai_wgl Unregistered / Unconfirmed GUEST, unregistred user! 2008-09-17 #19 []可以使用TList中的Sort方法,一个回调函数,需要编写比较的逻辑,但排序部分就不需要写了。