急!!多列排序算法!
我做的一个程序里需要对列表中的多个列进行排序.从网上下载的酸法都是只能排一列,我想是不是应该在原有算法的比较部分做一下改动,应该可以适应多列排序,但我怎么弄也不行.急请各位高手帮忙!!
我用的QuickSort,
procedure QSort(iLo,iHi:Integer);
var
Lo, Hi, Mid : Integer;
begin
Lo := iLo;
Hi := iHi;
Mid := (Lo + Hi) div 2;
repeat
while Compare(Self, Items[Lo],Items[Mid],gt) do Inc(Lo);
while Compare(Self, Items[Hi],Items[Mid],lt) do Dec(Hi);
if Lo <= Hi then
begin
exchange(Lo,Hi);
Inc(Lo);
Dec(Hi);
end;
until Lo > Hi;
if Hi > iLo then QSort(iLo, Hi);
if Lo < iHi then QSort(Lo, iHi);
end;
其中:
Compare是回调函数,声明如下:
TCompareFunction = function (Sender:TCustomSort; const AItemA,AItemB : Pointer;
const AShouldBe : TCompare) : Boolean of Object;