|| 返回 || 本站首页 ||奥赛信息||计算机基础||pascal基础||数据结构||经典算法||试题汇编||校本教程||自主练习||

|| 经典算法 >> 二分查找法完整版

双击自动滚屏 

   

二分查找法完整版



 

program  jjzx(input,output);

var

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

   i,j,n,x:integer;

begin

   writeln('输入10个从小到大的数:');

   for i:=1 to 10 do read(a[i]);

   writeln('输入要查找的数:');

   readln(x);

   i:=1;  n:=10;   j:=trunc((i+n)/2);

   if a[n]

writeln('查找失败,数组中无此元素!')  

else

        begin

          repeat

             if  a[j]>x then

                begin

                   n:=j;   j:=trunc((i+n)/2)

                end

              else

                begin

                   i:=j+1;   j:=trunc((i+n)/2)

                end

          until  (a[j]=x) or  (i=j)  ;

          if a[j]=x then

              writeln('查找成功!位置是:',j:3)

           else

writeln('查找失败,数组中无此元素!')

    end

end.

 

想想还有其他的方法解决X大于数组中的任何一个数的方法这种情况的方法吗?

 


 

 
 

 

 
 
 

制作与维护:重庆市忠县中学 谭海