分治法求最大值最小值
来源:互联网 发布:westvleteren 12 淘宝 编辑:程序博客网 时间:2024/04/30 15:38
1. 问题描述
用分治法查找数组元素的最大值和最小值。
2. 方法概述
(1)将数据集 S 均分为 S1 和 S2;
(2)求解 S1 和 S2 中的最大和最小值;
(3)最终的最大和最小值可以计算得到:min( S1, S2 ), max( S1, S2);
(4)采用同样的处理方法递归处理 S1 和 S2。
分治方法 (Divide and Conquer):
(1)将数据集 S 均分为 S1 和 S2;
(2)求解 S1 和 S2 中的最大和最小值;
(3)最终的最大和最小值可以计算得到:min( S1, S2 ), max( S1, S2);
(4)采用同样的处理方法递归处理 S1 和 S2。
3. c代码的实现
#include
#include
void binaryFindMinMax (const int *arr, int left, int right, int*min, int *max)
{
if ((right -left) == 1) {
*max = arr[left];
*min = arr[right];
if (arr[left] < arr[right]) {
*max = arr[right];
*min = arr[left];
}
}else if((right - left) == 0) {
*max = *min = arr[left];
}else{
int min1, min2, max1, max2;
binaryFindMinMax (arr, left, (right - left)/2 + left, &min1,&max1);
binaryFindMinMax (arr, (right - left)/2+1 + left, right, &min2,&max2);
min1 > min2 ? (*min = min2) : (*min = min1);
max1 > max2 ? (*max = max1) : (*max = max2);
}
}
int main (void)
{
int arr[20]; //at the most 20 number for convenience.
int min, max, i;
for (i = 0;scanf ("%d", &arr[i]); i++);
binaryFindMinMax (arr, 0, i-1, &min, &max);
printf ("min= %d, max = %d\n", min, max);
returnEXIT_SUCCESS;
}
2. 方法概述
3. c代码的实现
#include
#include
void binaryFindMinMax (const int *arr, int left, int right, int*min, int *max)
{
}
int main (void)
{
}
- 分治法求最大值最小值
- 分治法求数组的最小值和最大值
- 分治法求数组的最大值和最小值
- 数据结构(C)---分治法求最大值最小值
- 【分治法】求数组最大值和最小值(js版)
- 分治算法求数组的最大值最小值
- 分治法找最大值最小值
- 分治法求最大值
- 分治法求最大值
- 分治法求最大最小值
- 分治法求最大最小值
- 分治法之二分法搜索最大值最小值
- 计算最大值和最小值(分治法)
- 同时求数组的最大值和最小值的分治算法
- 使用分治法求最大值
- 分治法求数组最大值
- 求最大值与最小值
- 求最大值和最小值
- minigui常用的函数
- cscope
- linux c 的错误判断
- linux c 的错误判断与陷阱
- 分治法众数
- 分治法求最大值最小值
- minigui 笔记
- 设计模式:观察者模式
- 连接局域网共享文件夹没有权限
- 关于发表论文
- 我的大学生活
- 十进制转62进制
- Machine Learning Resources
- 雪千寻·爱的诠释