gpt4 book ai didi

德尔福: Sorted List

转载 作者:行者123 更新时间:2023-12-03 15:38:15 24 4
gpt4 key购买 nike

我需要在 Delphi 中对接近 1,00,000 个浮点条目进行排序。我是 Delphi 的新手,想知道是否有任何现成的解决方案可用。我尝试了一些语言提供的结构,但它们需要大量的时间才能运行完成。(5-10 秒的执行时间对于应用程序来说就足够了)

最佳答案

为什么不直接实现快速排序算法呢?

看这个简单的代码

program ProjectSortFoat;

{$APPTYPE CONSOLE}

uses
SysUtils;

procedure QuickSort(var List: array of Double; iLo, iHi: Integer) ;
var
Lo : integer;
Hi : integer;
T : Double;
Mid : Double;
begin
Lo := iLo;
Hi := iHi;
Mid:= List[(Lo + Hi) div 2];
repeat

while List[Lo] < Mid do Inc(Lo) ;
while List[Hi] > Mid do Dec(Hi) ;

if Lo <= Hi then
begin
T := List[Lo];
List[Lo] := List[Hi];
List[Hi] := T;
Inc(Lo);
Dec(Hi);
end;

until Lo > Hi;

if Hi > iLo then QuickSort(List, iLo, Hi);
if Lo < iHi then QuickSort(List, Lo, iHi);

end;



const
Elements = 1000000;
var
doubleArray : array of Double;
i : integer;
t : TDateTime;
begin
SetLength(doubleArray,Elements);
try
t:=Now;
Writeln('Init Generating '+FormatFloat('#,',Elements)+' random numbers ');
for i:=low(doubleArray) to high(doubleArray) do
doubleArray[i]:=Random(10000000)+Random; //can be improved
Writeln('Elapsed '+FormatDateTime('HH:NN:SS.ZZZ',Now-t));

t:=Now;
Writeln('Sorting '+FormatFloat('#,',Elements)+' random numbers ');
QuickSort(doubleArray, Low(doubleArray), High(doubleArray)) ;
Writeln('Elapsed '+FormatDateTime('HH:NN:SS.ZZZ',Now-t));

finally
Finalize(doubleArray);
end;
Readln;
end.

在我的机器中,对 1.000.000 个 float 进行排序的执行时间是0.167 秒

如果你有delphi 7或其他旧版本(我不知道新版本中是否存在),你可以检查

C:\Program Files\Borland\Delphi7\Demos\Threads

路径,一个很酷的演示应用程序,使用不同的排序算法和线程。

关于德尔福: Sorted List,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2485750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com