分治求最大最小

var x:array[1..1000]of integer;
    i,n,maxx,minn:integer;


procedure pd(r1, r2:integer;
var maxx,minn:integer);
  var max1,min1,max2,min2,d:integer;
begin
  if(r1=r2) then
   begin
    maxx:=x[r1];
    minn:=x[r1];
   end
    else if(r2=r1+1) then
    begin
     if(x[r2]>x[r1]) then
      begin
       maxx:=x[r2];minn:=x[r1];
      end
        else
        begin
         maxx:=x[r1];minn:=x[r2];
        end
   end
    else
     begin
      d:=(r1+r2) div 2;
      pd(r1,d,max1,min1);
      pd(d+1,r2,max2,min2);
      if (max1>max2) then maxx:=max1
      else maxx:=max2;
      if (min1<min2) then minn:=min1
      else minn:=min2;
     end;
end;
begin
 //assign(input,'input.txt');
 //reset(input);
 read(n);
 for i:=1 to n do read(x[i]);
 //assign(output,'output.txt');
 //rewrite(output);
 i:=1;
 //while not eof do
 //begin
  //read(x[i]);
  //inc(i);
 //end;
 pd(1,n,maxx,minn);
 writeln(maxx,' ',minn);
 //close(input);
 //close(output);
end.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值