1,实例代码:
#include <iostream>
using namespace std;
void maxmin(int a[],int low,int high,int& max,int& min) //引用作为参数的强大作用
{
int k, max1,min1,max2,min2;
if(high-low==1||high-low==0)
{
a[low]>a[high]? (max = a[low], min = a[high]):(max = a[high], min = a[low]);
}
else
{
k=(high+low)/2;
maxmin( a,low,k,max1,min1);
maxmin( a,k+1,high,max2,min2);
max=max1>max2? max1:max2;
min=min1<min2? min1:min2;
}
}
int main()
{
int max,min;
int data[]={8,3,6,2,1,9,4,5,7};
int num=sizeof(data)/sizeof(data[0]);
maxmin(data,0,num-1,max,min);
cout<<"最大值:"<<max<<endl;
cout<<"最小值:"<<min<<endl;
return 0;
}
分享到:
相关推荐
分治思想:将难以直接求解的大问题分解为k个相同的子问题;对这k个子问题分别求解。如果子问题的规模仍然不够小,则再划分为k个子问题,如此递归的进行下去,直到问题规模足够小,很容易求出其解为止;
分治算法实验(用分治法查找数组元素的最大值和最小值).doc
最终我将一个数组平分成两个小数组,分别求出各数组的两个最大及两个最小值,然后再分别组合4个最大值和四个最小值,最后再比较出大小,得出4个最大值的两个大值,4个最小值数组的两个最小值!不知道是不是分治法,...
利用分治法快速而有效的求出任意数组的最大值与最小值。 编码用C++实现
。。。
。。。
常规的做法是遍历一次,分别求出最大值和最小值,但我这里要说的是分治法,将数组分成左右两部分,先求出左半部份的最大值和最小值,再求出右半部份的最大值和最小值,然后综合起来求总体的最大值及最小值。...
。。。
。。。
分治法求最大值的c++的简单实现,代码简单容易理解
自己做的一个简单的求一组数据中两个最大的数和两个最小的数,并且求数组的和,然后输出!
问题可以简化为在n个数里面寻找最大和最小值。 (1)将数据等分为两组(两组数据的个数可能相差1),目的是分别选取其中的最大(小)值。 (2)递归分解直到每组元素的个数,则可以简单地找到其中的最大(小)值。...
//从两部分的两个最小值中选择小值}b.假设n=2k,比较次数的递推关系式:C(n)=2C(n/2)+2 for n>2C(1)=0, C(2)=1C(n)=C
给定一个顺序表,编写一个求出其最大值和最小值的分治算法。 分析: 由于顺序表的结构没有给出,作为演示分治法这里从简顺序表取一整形数组数组大小由用户定义,数据随机生成。我们知道如果数组大小为 1 则可以直接...
同时获取最大值和最小值,然后分别插入数组的首部和尾部 堆排序 思想 使用大顶堆的思想来排序,每次建堆后交换 做法 总体:建堆-替换 建堆 只要左子树或右子...
6.1 合并两个有序数组到其中一个数组 6.2 合并两个有序链表 6.3 合并K个有序链表 6.4 使用插入排序来排序链表 6.5 归并排序排序链表 6.6 第一个缺少的正数 6.7 排序颜色 7. 查找 7.1 在排序数组中查找数出现的范围 ...
9.1 最小值和最大值 9.2 期望为线性时间的选择算法 9.3 最坏情况为线性时间的选择算法 思考题 本章注记 第三部分 数据结构 第10章 基本数据结构 10.1 栈和队列 10.2 链表 10.3 指针和对象的...
3.1.2 假定一个解并判断是否可行 3.1.3 最大化最小值 3.1.4 最大化平均值 3.2 常用技巧精选(一) 3.2.1 尺取法 3.2.2 反转(开关问题) 3.2.3 弹性碰撞 3.2.4 折半枚举(双向搜索) 3.2.5 坐标离散化 3.3 活用各种...