delphi中有没有排序函数?
如果有的话,那个函数最快,并且我想知道,它用的什么样的排序法?
如果有的话,那个函数最快,并且我想知道,它用的什么样的排序法?
解决方案 »
- delphi 2009 runtime themes
- 最好的数据库解决办法,库存,来者都有分,问题好的得100
- 求救-错误"超时已过期"是什么原因?
- 想学习一下3层结构的数据库系统,请高手不吝赐教,谢谢~!
- 简单问题!!!!!在线等~~~解决就结贴
- 哪能找到一个图书管理系统示例的源代码,谢谢
- 关于自己编写导航条的问题
- 我现在正在从TDBGrid继承写一个控件,现在需要在TColumn这个类里面添加一个属性(String or Boolean)不知如何做?高手们帮帮忙啊!!
- 急死了,都三天了,一点头绪都没有,怎么办???高分相送...
- dll问题,资源怎样入库
- 怎样取得多个文件的总大小呢?!
- 请问怎样使单选组框RadioGroup1中的某一个Items非使能(即类似Enabled=false)?
饭的自己做,米都买好了,你还指望别人端到嘴边吗?
程序的自己写,Delphi都装好了,你还希望有完全现成的代码吗?自己动手,丰衣足食
不过在delphi中有没有相关的函数实现就不清楚了。
不过我估计不会有,我觉得算法在具体应用时都有具体的不同的情况,不太好写成适合所有情况的函数。
var
I, J, T: Integer;
begin
for I := High(A) downto Low(A) do
for J := Low(A) to High(A) - 1 do
if A[J] > A[J + 1] then
begin
VisualSwap(A[J], A[J + 1], J, J + 1);
T := A[J];
A[J] := A[J + 1];
A[J + 1] := T;
if Terminated then Exit;
end;
end;{ 选择排序 }procedure TSelectionSort.Sort(var A: array of Integer);
var
I, J, T: Integer;
begin
for I := Low(A) to High(A) - 1 do
for J := High(A) downto I + 1 do
if A[I] > A[J] then
begin
VisualSwap(A[I], A[J], I, J);
T := A[I];
A[I] := A[J];
A[J] := T;
if Terminated then Exit;
end;
end;{ 快速排序 }procedure TQuickSort.Sort(var A: array of Integer); procedure QuickSort(var A: array of Integer; iLo, iHi: Integer);
var
Lo, Hi, Mid, T: Integer;
begin
Lo := iLo;
Hi := iHi;
Mid := A[(Lo + Hi) div 2];
repeat
while A[Lo] < Mid do Inc(Lo);
while A[Hi] > Mid do Dec(Hi);
if Lo <= Hi then
begin
VisualSwap(A[Lo], A[Hi], Lo, Hi);
T := A[Lo];
A[Lo] := A[Hi];
A[Hi] := T;
Inc(Lo);
Dec(Hi);
end;
until Lo > Hi;
if Hi > iLo then QuickSort(A, iLo, Hi);
if Lo < iHi then QuickSort(A, Lo, iHi);
if Terminated then Exit;
end;begin
QuickSort(A, Low(A), High(A));
end;