请输入您要查询的百科知识:

 

词条 二分法查找数据
释义

算法思想

当数据量很大适宜采用该方法。采用二分法查找时,数据需是排好序的。

假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段中查找;若x大于当前位置值则在数列的后半段中继续查找,直到找到为止。

程序清单

var

a:array[1..20] of integer;

i,j,p,t,w,m,x:integer;

begin

randomize;

for i:=1 to 20 do a[i]:=random(100); 随机产生20个1-100的整数

for i:=1 to 19 do

for j:=i+1 to 20 do if a[i]>a[j] then begin p:=a[i];a[i]:=a[j];a[j]:=p;end; 选择法排序

for i:=1 to 20 do begin write('a[',i,']=',a[i],' ');if i mod 5=0 then writeln;end;readln(x); 打印20个随机数

t:=1; w:=20; 头指针、尾指针赋值

m:=(t+w) div 2;中指针赋值

repeat

if a[m]>x then begin w:=m-1;m:=(t+w) div 2;end; 如果a[m]>x 则尾指针赋值为中指针-1

if a[m]<x then begin t:=m+1;m:=(t+w) div 2;end; 如果a[m]<x 则头指针赋值为中指针+1

until (a[m]=x) or (t>w); 在找到x或头指针大于尾指针(未找到)时退出循环

if a[m]=x then writeln('find! place:',m:3) else writeln('cannot find!');

readln;

end.

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/1/31 14:14:43