お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"2分法によるIndexOf"






TListを継承したクラスを想定してます。
Sort済みのListに対してIndexOfを高速に行います。

function TXXXList.IndexOfEx(P :Pointer; Comp:TListSortCompare):Integer;
var L,H,C: Integer;
begin
  L := 0; H:= Count - 1;
  while L <= H do begin
    Result := (L + H) div 2;
    C := Comp(Items[Result], P);
    if C < 0 then L := Result + 1         //上半分に絞り再度検索
      else if C > 0 then H := Result - 1  //下半分に
             else Exit;                   //一致 
  end;
  Result := -1;   //見つからなかった
end;


                       97/11/18(火) 07:07 べあ(BYI15773)

Original document by べあ            氏 ID:(BYI15773)


ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum