DC分治法求数组最大最小值

原创 2012年03月21日 09:05:59
#include<iostream>

void dcMaxMin( int [], int, int, int *, int * );

void dcMaxMin( int arr[], int low, int high, int *tmpMax, int *tmpMin )
{
        if ( high - low <= 1)// 最多俩元素
        {
                if (arr[low] <= arr[high] )
                {
                        *tmpMax = arr[high];
                        *tmpMin = arr[low];
                        return; // 递归出口
                }
                else
                {
                        *tmpMax = arr[low];
                        *tmpMin = arr[high];
                        return; //递归出口
                }
        }

        int min1, min2, max1, max2;
        int mid = ( high - low ) / 2 + low;
        //递归开始
        dcMaxMin(arr, low, mid, &max1, &min1);
        dcMaxMin(arr, mid+1, high, &max2, &min2);

        *tmpMax = max1 < max2 ? max2 : max1;
        *tmpMin = min1 < min2 ? min1 : min2;

}

int main()
{
        int arr[] = {4, 1, 2, 9, 8, 3};
        int len = sizeof ( arr ) / sizeof( int );
        int max, min;
        max = arr[0];
        min = arr[0];
        dcMaxMin(arr, 0, len, &max, &min);
        std::cout << max << "\t" << min << std::endl;

        return 0;
}

用分治法求一个数组的最大最小值

问题:用分治法来求解一个数组的最大最小值      分析:用遍历的方法来求解当然很简单,但是题目给我们的要求是用分治法,因此我们需要每次利用递归来求数组的一个小部分的最大最小值,递归的结束条件是数组中...
  • henry06
  • henry06
  • 2006年06月26日 12:15
  • 3946

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

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

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

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

分治法求数组最大最小值

常规的做法是遍历一次,分别求出最大值和最小值,但我这里要说的是分治法(Divide and couquer),将数组分成左右两部分,先求出左半部份的最大值和最小值,再求出右半部份的最大值和最小值,然后...
  • dxhi11
  • dxhi11
  • 2016年04月08日 09:09
  • 1140

Java 分治法 求解一组数组元素的最大值和最小值

分治法的思想: 将求出的小规模的问题的解合并为一个更大规模的问题的解,自底向上逐步求出原来问题的解。分治法的设计思想,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,从小的问题...
  • wodedipang_
  • wodedipang_
  • 2016年06月28日 22:53
  • 2502

分治法的经典问题——求数列中最大最小值

前面我们已经了解了分治法的原理和使用,分治法的经典问题——大整数相乘,趁热打铁,来学习一下如何使用分治法来求数列中的最大最小值。利用分治法来分析伪代码时间复杂性代码实现#include #includ...
  • jeffleo
  • jeffleo
  • 2016年12月03日 20:36
  • 1394

分治法求数组的最大最小值

分治法的思想就是每次将数组一分为二,分别求两部分的最大值与最小值,然后比较哪部分的更大和更小,最后得出整个数组的最大最小值。 源代码如下: /***************************...
  • zhaogang1993
  • zhaogang1993
  • 2015年01月18日 15:05
  • 629

求解最大值与最小值-分治算法

概述无论是最好、最坏或者平均情况,该MaxMin分治算法所用的比较次数都是3n/2-2。而实际中,任何一种以元素比较为基础的找最大值最小值元素的算法,其元素比较次数的下界为3n/2-2。因此,从此种情...
  • Xminyang
  • Xminyang
  • 2016年11月28日 11:31
  • 5054

用分治法求最大最小值

http://www.nowamagic.net/librarys/veda/detail/257 // 用分治法求最大最小值 public static int getMax(int[] ar...
  • seuliujiaguo
  • seuliujiaguo
  • 2014年09月25日 09:38
  • 594

分治法求数组最大最小数

又是一年好时光要过去,作为刚刚报名蓝桥杯的我开始学习一些算法知识,希望积少成多,在明年4月份的时候可以积累到一定的水平.同时也感谢韦佳栋和杜帅两个基友.不然作为非计算机院的我都不知道还有一个比赛叫蓝桥...
  • myiloveuuu
  • myiloveuuu
  • 2015年12月01日 15:06
  • 2882
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DC分治法求数组最大最小值
举报原因:
原因补充:

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