Delphi:排序列表
我需要在 Delphi 中对接近 1,00,000 个浮点条目进行排序。我是 Delphi 的新手,想知道是否有任何现成的解决方案可用。我尝试了一些语言提供的结构,但它们需要大量的时间才能运行完成。(5-10 秒的执行时间对于应用程序来说是合适的)
I need to sort close to a 1,00,000 floating point entries in Delphi. I am new to Delphi and would like to know if there are any ready made solutions available. I tried a few language provided constructs and they take an inordinate amount of time to run to completion.(a 5-10 sec execution time is fine for the application)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
为什么不直接实现快速排序算法呢?
在我的机器上看这个简单的代码
,排序 1.000.000 个浮点数的执行时间是 0.167 秒。
如果你有delphi 7或其他旧版本(我不知道新版本中是否存在)你可以检查
路径,用于使用不同排序算法和线程的酷演示应用程序。
why not just implement a quick Sort algorithm?
see this simple code
in my machine, the execution time for sorting 1.000.000 float numbers is 0.167 seconds.
if you have delphi 7 or another older version (i don't know if exist in the new versions) you can check the
path, for a cool demo app using differents sorting algorithms an threads.
您使用什么版本?如果您使用的是 Delphi 2009 或 2010,则可以使用泛型创建
TList
并调用其 Sort 方法。如果您使用的是早期版本,非泛型 TList 也有一个 Sort 方法,但设置起来有点棘手,因为它使用指针和 Real(或 Double),您可能希望将其用作浮点数太大,无法转换为指针。
What version are you using? If you're in Delphi 2009 or 2010, you can use generics to make a
TList<real>
and call its Sort method.If you're in an earlier version, the non-generic TList has a Sort method too, but it's a bit trickier to set up since it uses pointers, and Real (or Double), which is what you probably want to use as a floating point number, is too large to cast to a pointer.