同时查找数组中最大和最小值
查找数组中的最大值和最小值有下面的方法:
1、按照普通的方法进行查找,分别写出找到数组中最大值函数和最小值函数,这种方法很简单:
代码如下:
int Min(int *pnArr, int nLen)
{int nMin = pnArr[0];for (int i = 1; i < nLen; i++){if (nMin > pnArr[i]){nMin = pnArr[i];}}return nMin;
}int Max(int *pnArr, int nLen)
{int nMax = pnArr[0];for (int i = 1; i < nLen; i++){if (nMax < pnArr[i]){nMax = pnArr[i];}}return nMax;
}
2、第二种方法,就是同时查找数组中的最大值和最小值,这种方法和查找数组中的最小值和次最小之一样,
当数组的个数是偶数时N:
1、首先假设最小值和最大值是最前面的两个数
min1=p[0];
min2=p[1];
2、进行循环,进入下一组的两个数中进行比较【3 4】中对比
如果第三个数小于第四个数
那个第三个数跟min1 和max的数进行比较,重新分配最小值和最大值
与之雷同第三个数大于第四个数时,一样的操作,
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
第二种情况:
当数组中数的个数是奇数时N,
这一过程和偶数时类似:
1、假设最小值和最大值的数都是p[0],
这样剩下的数就是偶数了,
2、进入下来那个组数进行比较,重新分配最小值和最大值
依次按照两个两个的数进行循环,就可以得到最小值和最大值
具体的操作代码:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <time.h>void PrintArr(int *pnArr, int nLen)
{for (int i = 0; i < nLen; i++){printf("%d ", pnArr[i]);}printf("\n");
}int Min(int *pnArr, int nLen)
{int nMin = pnArr[0];for (int i = 1; i < nLen; i++){if (nMin > pnArr[i]){nMin = pnArr[i];}}return nMin;
}int Max(int *pnArr, int nLen)
{int nMax = pnArr[0];for (int i = 1; i < nLen; i++){if (nMax < pnArr[i]){nMax = pnArr[i];}}return nMax;
}void MaxMin(int *pnArr, int nLen, int *pnMax, int *pnMin)
{if (nLen % 2 == 0){if (pnArr[0] > pnArr[1]){*pnMax = pnArr[0];*pnMin = pnArr[1];}else{*pnMax = pnArr[1];*pnMin = pnArr[0];}for (int i = 3; i < nLen; i += 2){if (pnArr[i] > pnArr[i - 1]){if (pnArr[i] > *pnMax){*pnMax = pnArr[i];}if (pnArr[i - 1] < *pnMin){*pnMin = pnArr[i - 1];} }else{if (pnArr[i - 1] > *pnMax){*pnMax = pnArr[i - 1];}if (pnArr[i] < *pnMin){*pnMin = pnArr[i];} }}}else{*pnMax = pnArr[0];*pnMin = pnArr[0];for (int i = 2; i < nLen; i += 2){if (pnArr[i] > pnArr[i - 1]){if (pnArr[i] > *pnMax){*pnMax = pnArr[i];}if (pnArr[i - 1] < *pnMin){*pnMin = pnArr[i - 1];} }else{if (pnArr[i - 1] > *pnMax){*pnMax = pnArr[i - 1];}if (pnArr[i] < *pnMin){*pnMin = pnArr[i];} }}}}
int main()
{int nArr[10] = {0,2,1,3,2,6,9,7,4,12}; PrintArr(nArr, 10);int nMax, nMin;MaxMin(nArr, 10, &nMax, &nMin);printf("最大值为%d 最小值为%d\n", nMax, nMin);system("pause");return 0;
}
同时查找数组中最大和最小值相关推荐
- es6 数组找最大值_JavaScript 查找数组中最大值与最小值
最小值算法如下: 将数组中第一个元素赋值给一个变量,把这个变量作为最小值: 开始遍历数组,从第二个元素开始依次和第一个元素进行比较: 如果当前的元素小于当前的最小值的话,就把当前的元素值赋值给最小值: ...
- js获取数组中最大和最小值
文章目录 1. 排序法 2. 假设法 3. 使用 Math 中的 max/min 方法 4. 使用ES6的扩展运算符 1. 排序法 // 数组中获取最大和最小值compareMaxMin() {con ...
- Javascript获取数组中最大和最小值
https://www.cnblogs.com/zhouyangla/p/8482010.html 转载于:https://www.cnblogs.com/yuyedaocao/p/10298614. ...
- JavaScript 数组排序及查找数组中最大值最小值方法
JavaScript 数组排序方法及查找最大值最小值方法 1. sort()方法排序 1.1 方法介绍 1.2 语法:arr.sort([compareFunction]) 1.3 参数说明 1.4 ...
- java获取数组的最小值_Java 数组获取最大和最小值的实例实现
以下实例演示了如何通过 Collections 类的 Collections.max() 和 Collections.min() 方法来查找数组中的最大和最小值: Main.java 文件: impo ...
- 天道酬勤之Java 实例 - 数组获取最大和最小值
以下实例演示了如何通过 Collections 类的 Collections.max() 和 Collections.min() 方法来查找数组中的最大和最小值: Main.java 文件: impo ...
- 查找数组中第二个最小元素
查找数组中最小的两个元素的过程: 第一种情况: 如果数组的数据是偶数个N: 1.首先假设最小值和次最小值是最前面的两个数 min1=p[0]; min2=p[1]; 2.进行循环,进入下一组的两个数中 ...
- 6 获取数组中最小值_C语言每日一练8——数组中最大值和最小值
题目: 利用指针函数,求某数组中的最大值和最小值. 实现代码: /* ================================================================= ...
- Python算法——分治法查找数组中元素最小最大值
要求: 给定数组a1,a2,a3,...an,找出数组中最大值和最小值.(数组中两两各不相同) 分析: 算法思想类似于上图,将数组两两分为一组,如果数组元素奇数个,就把最后一个元素单独分为一组,然后分 ...
最新文章
- 转:Silverlight样式写法
- Oracle安装错误“程序异常终止
- pip install 报错:Versioning for this project requires either an sdist tarball, ...
- 二分搜索之x平方根(保留整数)
- HTML5 响应式图片
- SpringBoot中静态资源和首页定制
- Linux脏牛漏洞提权复现
- idea关联mysql数据库具体操作
- 高德地图 API 搜索服务 搜索定位 用不了
- html 如何清除历史记录,如何删除网页历史记录?
- 偏差-方差分解bias-variance decomposition
- 利用MTviz绘制线粒体基因组结构图
- FragmentActivity_左右滑动的碎片
- nginx在Linux系统安装
- 2021csp-j2 题解
- html5学习记录(三)
- 【kafka】三、kafka命令行操作
- 查看浏览器的cookie
- 马克一下:vue工程创建后,目录下怎么没有vue.config.js文件
- Ideal必备宝藏插件
热门文章
- Linux下触摸屏驱动程序分析
- Android Activity形象描述
- php header 不起作用,php – symfony:setHttpHeader()不起作用,header()没有
- 第二课unit11 系统恢复技术
- 苹果iphone手机上input的button按钮颜色显示有问题,安卓却没问题
- Logging with Log4net (二)
- [置顶] 强大的jquery选择器
- crontab 用法
- 新鲜的jquery插件收集
- 算法杂货铺——k均值聚类(K-means)