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;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

分治法查找数组最大最小值

一直以来,在编程的道路上,只注重需求问题的解决方法,很少注重效率算法之类的东西,自然算法是比较薄弱的地方,刚看到有人在论坛问分治法的东西,到google搜索了下,把百度百科的分治法看了遍(话说goog...

编程之美3:寻找数组中的最大值和最小值以及最大值和次大值

很开心,这是今天的第三篇文章啦!下午健身也感觉非常过瘾,托付宿舍妹子从日本代购的护肤品也到了。耳边漂浮着Hebe田馥甄的《魔鬼中的天使》文艺的声线,一切都好棒,O(∩_∩)O哈哈~。爱生活,爱音乐,爱...

【编程之美】读书笔记:寻找数组中的最大值和最小值

问题:对于一个由N个整数组成的数组,需要比较多少次才能把最大值和最小值的数找出来呢?                 解法一:将寻找数组中的最大值和最小值看成是两个独立的问题。分别求出最大值和...

用分治法查找数组元素的最大值和最小值

算法分析: 代码实现: #include "stdio.h" #include "stdlib.h" #include "time.h" #define ARRAY_SIZE 50 void Fi...

寻找数组中的最大值和最小值

数组是最简单的一种数据结构。我们经常碰到一个基本的问题,就是寻找整个数组中的最大数或最小数。我们只需 遍历一遍数组,就能找到最大(最小)数。如果同时寻找最大数和最小数呢?对于一个由N个整数组成的数组...

寻找数组中最大值和最小值—分治算法

题目:给定一个数组,求其最大值和最小值 解法:复杂度最低的算法应该是采用分治算法求得的。 分治算法,其基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同...

006-寻找最大值和最小值-分治法-《算法设计技巧与分析》M.H.A学习笔记

在一个含n个元素的数组中寻找最大值和最小值。采用分治法可能仅用3n/2-2次比较在数组中找到最大值和最小值。

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

** * * 分治法求数组的最小值和最大值 */ import java.util.Arrays; public class MinAndMaxArray { public static ...
  • yyywyr
  • yyywyr
  • 2012-09-21 11:18
  • 2347

寻找数组的最大值与最小值

问题:寻找数组中的最小值和最大值。   一道很简单的题目,一般有下面4种解法: 1  遍历两次,每次分别找出最小值和最大值。 2  只遍历一次,每次取出的元素先与已找到的最小值比较,再与已找到...

算法学习日记--寻找数组中的最大值和最小值

问题:           数组是最简单的一种数据结构。我们经常碰到的一个基本问题,就是寻找整个数组中的最大数,或者最小的数。这是我们会扫描一遍数组,把最大(最小)的数找出来。 解法:     ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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