分治求最大最小

原创 2015年07月10日 09:47:09
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.
版权声明:本文为博主原创文章,未经博主允许不得转载。

递归求数组最大最小值(分治思想)

求数组最大最小值我们可以用遍历或者最简单的排序方法来实现,但是那样子的时间复杂度将会大很多,因此我们可以采用分治思想来求最大最小值,即先求左右两部分,即先求出左半部分的最大最小值,再求出右半部分的最大...
  • chenhuajie123
  • chenhuajie123
  • 2013年09月13日 19:53
  • 7546

求最大最小元 C++实现 分治法

采用分治法在一个元素集合中寻找最大元素和最小元素。 程序实现: #include #include #include using namespace std; const int N=1000; ...
  • wyh7280
  • wyh7280
  • 2015年05月23日 13:15
  • 1148

[算法学习笔记]分治法——最大子序列和问题

何为分治法?在上一篇文章中讲到归并排序就有提到过分治法,这里在重复一次:分治法分治法采用了递归的结构,将原问题分成几个规模较小但是类似于原问题的子问题, 通过递归的方式再来求解这些小问题,然后将子问题...
  • u014235934
  • u014235934
  • 2016年07月22日 16:52
  • 2810

算法笔记04--分治法之寻找最大最小元素

顾名思义,“分治”名字本身就已经给出了一种强有力的算法设计技术,它可以用来解决各类问题。在它最简单的形式里,一个分治算法把问题实例划分成若干子实例(多数情况是分成两个),并分别递归地解决每个子实例,然...
  • u013371735
  • u013371735
  • 2014年11月25日 13:46
  • 1465

【算法】2 由股票收益问题再看分治算法和递归式

回顾分治算法分治算法的英文名叫做“divide and conquer”,它的意思是将一块领土分解为若干块小部分,然后一块块的占领征服,让它们彼此异化。这就是英国人的军事策略,但我们今天要看的是算法。...
  • NoMasp
  • NoMasp
  • 2015年05月27日 18:48
  • 6959

[算法入门经典] 8.1.3 分治法 求最大连续和

这个问题看了好久,
  • x_iaow_ei
  • x_iaow_ei
  • 2014年06月05日 16:52
  • 976

最大连续和(分治法)O(nlogn)

分解:将序列分解成元素个数尽量相等的子序列,求出每个子序列的最大连续和 合并:合并子问题得到原问题的解,由于最大连续和的子序列要么完全在中点左边,要么完全在中点右边,要么就是横跨左右两边,所以比较这...
  • daniel_csdn
  • daniel_csdn
  • 2016年03月14日 19:38
  • 717

分治法之求最大连续子序列和

对原问题有如下解 1.最大子序列在数组中点的左边 2.最大子序列在数组中点的右边 3.最大子序列跨越数组中点#include using namespace std; int FIND_MAX_...
  • aNoobCoder
  • aNoobCoder
  • 2017年03月05日 11:52
  • 318

计算最大值和最小值(分治法)

分治法计算最大值和最小值,是一个经典的算法程序。 原始数据使用随机函数生成。 采用结构化程序设计,可以很容易改为从标准输入或文件读入数据,只需要修改函数getData即可。 数据个数由宏定义给出,也...
  • tigerisland45
  • tigerisland45
  • 2016年04月21日 12:17
  • 1567

hdu 1003 Max Sum(最大连续子序列和) (学了一下分治)

都不知道以前刷杭电是怎么做的最大连续子序列和,
  • u012659423
  • u012659423
  • 2014年07月17日 13:03
  • 1160
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:分治求最大最小
举报原因:
原因补充:

(最多只允许输入30个字)