读书人

Delphi 折半查找法解决办法

发布时间: 2012-02-22 19:36:55 作者: rapoo

Delphi 折半查找法
用Delphi实现 折半查找法?计算出时间复杂度和空间复杂度

[解决办法]
Value,{ 需要查找的数据 }L{ 数据列表最低 },H{ 数据列表最高 },M { 临时保存中间值的变量 }:integer;
ValueList:List for Sorted Data;{ 数据列表,已经升序排序 }
begin
Result:=-1;
if (Value <ValueList[L]) or (Value> ValueList[H]) then exit;
while L <=H do
begin
M:=(L+H) div 2;
if ValueList[M]=Value then
begin
Result :=M;
Break;
end else if ValueList[M]> Value then
H:=M-1
else
L:=M+1;
end;
end;

[解决办法]
弱弱的写一个!
function TForm1.Sort(var A: array of Integer; Key: Integer): Integer;
var
L, H: Integer;
begin
L := Low(A);
H := High(A);
repeat
Result := (L + H) div 2;
if Key = A[Result] then Exit;
if Key > A[Result] then
L := Result + 1
else
H := Result - 1;
until L > = H;
Result := -1;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
a: array[0..9] of integer;
begin
for I := Low(a) to High(a) do
begin
a[I] := I*10;
end;
ShowMessage(IntToStr(Sort(a,50)));
end;

读书人网 >.NET

热点推荐