首页 > 其他 > 详细

二分查找的上下界

时间:2016-02-05 19:07:53      阅读:161      评论:0      收藏:0      [点我收藏+]

如果数组中有多个元素是我们要找的元素v,我们要返回这个数出现位置的上下界,或者没找到该数要返回能插入此数的位置,这就是二分查找的上下界问题

 1 var
 2   n,i,j,k,l,r,m:longint;
 3   a:array[1..10000] of longint;
 4 function find_high(k:longint):longint;
 5   begin
 6     l:=1;r:=n;
 7     while l<=r do begin
 8       m:=(l+r) shr 1;
 9       if a[m]>k then r:=m-1 else l:=m+1;
10     end;
11     exit(l-1);
12   end;
13 function find_low(k:longint):longint;
14   begin
15     l:=1;r:=n;
16     while l<=r do begin
17       m:=(l+r) shr 1;
18       if a[m]>=k then r:=m-1 else l:=m+1;
19     end;
20     exit(r+1);
21   end;
22 begin
23   readln(n,k);
24   for i:=1 to n do read(a[i]);
25   writeln(find_high(k));
26   writeln(find_low(k));
27 end.

 

二分查找的上下界

原文:http://www.cnblogs.com/vacation/p/5183342.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!