16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"メソッドでソートするList"
この発言は #01060 TN さんのメソッドでソートするList に対するコメントです
中途半端なクラスを新規に作るとうざいので,これだけのためならただの手続きを
一個つくって Listを渡す方がまだスマートでしょう.
使い方
・比較関数をメソッドとして作る
・下記手続きにListとMethodを渡して呼び出す
type
TListSortCompareMethod = function(Item1, Item2: Pointer):Integer of object;
//////////////////////////////////////////////////////////////////////////////
procedure QuickSort( SortList: TList; Compare: TListSortCompareMethod );
var
I, J: Integer;
P, T: Pointer;
procedure QuickSortInner( SortList: TList; L, R: Integer;
Compare: TListSortCompareMethod );
begin
repeat
I := L;
J := R;
P := SortList[(L + R) shr 1];
repeat
while Compare(SortList[I], P) < 0 do Inc(I);
while Compare(SortList[J], P) > 0 do Dec(J);
if I <= J then
begin
T := SortList[I];
SortList[I] := SortList[J];
SortList[J] := T;
Inc(I);
Dec(J);
end;
until I > J;
if L < J then QuickSortInner(SortList, L, J, Compare);
L := I;
until I >= R;
end;
begin
if SortList.Count > 0 then
QuickSortInner(SortList, 0, SortList.Count - 1, Compare);
end;
TN(CQJ01721)
Original document by TN 氏 ID:(CQJ01721)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|