zoukankan      html  css  js  c++  java
  • 二分查找的上下界

    如果数组中有多个元素是我们要找的元素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.
  • 相关阅读:
    centos6.8升级python3.5.2
    钓鱼
    斯诺登的密码
    模板,堆,小根堆
    哥德巴赫猜想(升级版)
    哥德巴赫猜想
    线性筛素数
    乒乓球
    数的重心模板
    笨小猴
  • 原文地址:https://www.cnblogs.com/vacation/p/5183342.html
Copyright © 2011-2022 走看看