📄 umain.~pas
字号:
unit uMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB;
const
MaxLen =100;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Memo1: TMemo;
Button2: TButton;
Memo2: TMemo;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
FList:array[0..MaxLen] of Integer;
function Search(Key:integer):Integer;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
i,j:integer;
begin
//生成随机数组
Randomize;
j:=0;
for i := 0 to MaxLen do
begin
j:=j+random(3)+1;
FList[i]:=j;
Memo2.Lines.Add(Format('%d : %d',[i,j]));
end;//End For
Memo2.Lines.Add(Format('%d : %d',[i,j]));
end;
function TForm1.Search(Key:integer):Integer;
var
Curpos,LowPos,HighPos ,count,n:integer;
begin
Result :=-1;
LowPos := Low(FList) ;
HighPos := High(FList);
n := HighPos - LowPos -1;
count := 0;
while FList[LowPos] <= FList[HighPos] do
begin
Inc(count);
//Curpos := LowPos + Trunc((Key - Flist[LowPos])/(FList[HighPos]-FList[LowPos])*n);
Curpos := (HighPos + LowPos ) div 2 ;
if FList[Curpos] = key then
begin
Result := Curpos;
Break;
end;
if Key>FList[Curpos] then
LowPos := Curpos + 1
else
HighPos := Curpos -1;
end;//End While
Memo1.Lines.Add('查找次数:'+IntToStr(count)); //调试
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Curpos,Key:integer;
begin
Button2.Enabled := True;
Key := StrToInt(Edit1.Text);
Curpos := Search(key);
if Curpos>=0 then
begin
Memo1.Lines.Add(Format('查找 %d 成功;位置 %d FList[pos] = %d '
,[Key,Curpos,FList[Curpos]]));
end
else
begin
Memo1.Lines.Add(Format('查找 %d 失败 ',[Key ])) ;
end
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Button2.Enabled := False;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -