整型数组处理算法(四)求数组的最大值和最小值

2024-06-16 08:18

本文主要是介绍整型数组处理算法(四)求数组的最大值和最小值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

求数组的最大值和最小值,返回值在maxValue和minValue。

方法一:

分治法(Divide and couquer),将数组分成左右两部分,先求出左半部份的最大值和最小值,再求出右半部份的最大值和最小值,然后综合起来求总体的最大值及最小值。这是个递归过程,对于划分后的左右两部分,同样重复这个过程,直到划分区间内只剩一个元素或者两个元素。

具体实现如下:

// 求数组的最大值和最小值,返回值在maxValue和minValue
void MaxandMin(int *a, int l, int r, int& maxValue, int& minValue)
{if(l == r) // l与r之间只有一个元素{maxValue = a[l] ;minValue = a[l] ;return ;}if(l + 1 == r) // l与r之间只有两个元素{if(a[l] >= a[r]){maxValue = a[l] ;minValue = a[r] ;}else{maxValue = a[r] ;minValue = a[l] ;}return ;}int m = (l + r) / 2 ; // 求中点int lmax ; // 左半部份最大值int lmin ; // 左半部份最小值MaxandMin(a, l, m, lmax, lmin) ; // 递归计算左半部份int rmax ; // 右半部份最大值int rmin ; // 右半部份最小值MaxandMin(a, m + 1, r, rmax, rmin) ; // 递归计算右半部份maxValue = max(lmax, rmax) ; // 总的最大值minValue = min(lmin, rmin) ; // 总的最小值
}

方法二:

用循环,实现如下:

void MaxandMinByLoop(int *a, int nCount, int& maxValue, int& minValue)
{maxValue = a[0];minValue = a[0];for (int i=1; i<nCount; i++){if (maxValue<a[i]){maxValue = a[i];}else if (maxValue>a[i]){minValue = a[i];}}
}

测试代码:

int main()
{int* a= new int[6];int* b= new int[3];a[0]=2;a[1]=5;a[2]=3;a[3]=4;a[4]=7;a[5]=0;b[0]=8;b[1]=9;b[2]=6;int MaxNum;int MinNm;//MaxandMin(b, 0, 2, MaxNum, MinNm);MaxandMin(a, 0, 5, MaxNum, MinNm);cout << "MinNm=" << MinNm << ",MaxNum=" << MaxNum <<endl;MaxandMinByLoop(b, 3, MaxNum, MinNm);//MaxandMinByLoop(a, 6, MaxNum, MinNm);cout << "MinNm=" << MinNm << ",MaxNum=" << MaxNum <<endl;delete[] a;a=NULL;delete[] b;b=NULL;cout << endl;return 0;
}

测试结果就不贴了吧,有兴趣的朋友可以copy code试一试。


转载请注明原创链接:http://blog.csdn.net/wujunokay/article/details/12113597










这篇关于整型数组处理算法(四)求数组的最大值和最小值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1065930

相关文章

Java堆转储文件之1.6G大文件处理完整指南

《Java堆转储文件之1.6G大文件处理完整指南》堆转储文件是优化、分析内存消耗的重要工具,:本文主要介绍Java堆转储文件之1.6G大文件处理的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言文件为什么这么大?如何处理这个文件?分析文件内容(推荐)删除文件(如果不需要)查看错误来源如何避

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

Java docx4j高效处理Word文档的实战指南

《Javadocx4j高效处理Word文档的实战指南》对于需要在Java应用程序中生成、修改或处理Word文档的开发者来说,docx4j是一个强大而专业的选择,下面我们就来看看docx4j的具体使用... 目录引言一、环境准备与基础配置1.1 Maven依赖配置1.2 初始化测试类二、增强版文档操作示例2.

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方