数组取最大值最小值

本文介绍两种快速获取数组中最大值与最小值的方法:直接遍历比较和排序后选取;并提供了一种有效的方法来找出数组中的第二大值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、数组取出最大值,最小值的方式

第一种、

遍历一边数组就可以找出需要的值,基本上可以说是速度最快的算法,还不需要排序

int [] intArray = {1,3,2,4,2,5,2,6,45,7,5,86,5,45,3,867} ;
int max = intArray[0];
int min = intArray[0];
for (int i : intArray) {
max = max>i?max:i;
min = min<i?min:i;
}
System.out.println(max+"-----"+min);//返回的最大值和最小值

第二种、

先排序,在取最大最小值

Arrays.sort(intArray.clone());//clone的目的是因为数组本身也是个对象,不想改变它本身的顺序,当然,要是顺序没什么用处,也可以不clone
System.out.println(intArray[intArray.length-1]);//最大值
System.out.println(intArray[0]);//最小值

其实在秦老师的书里,另外我自己也测试了,在1w条数据之内,这两种方法是差不多的,可以说事几乎一样的,

2、取出数组第二大值的方式、

这个就要想想了,第二大致不可以能一个,所以位置上取就不太如意了

treeSet  是可以实现删除重复的、

Integer [] intArray = {1,3,2,4,2,5,2,6,45,7,5,86,5,45,3,867} ;

List<Integer> l = Arrays.asList(intArray);
TreeSet<Integer> tl = new TreeSet<Integer>(l);
System.out.println(tl.lower(tl.last()));
//比最大值小的值



最值的计算使用集合是最简单的,使用数组是性能最好的。

---整理自:秦老师的《、、、、151个建议》


### C++ 中获二维数组最大值最小值的示例代码 以下是通过 C++ 实现的一个完整的程序,用于计算并打印二维数组中的最大值及其位置、最小值及其位置。此方法基于引用的内容进行了扩展。 ```cpp #include <iostream> using namespace std; int main() { const int rows = 10; const int cols = 20; int a[rows][cols]; // 使用 rand 函数初始化二维数组 for (int i = 0; i < rows; ++i) { for (int j = 0; j < cols; ++j) { a[i][j] = rand() % 100; // 随机生成 [0, 99] 范围内的整数 } } // 初始化最大值最小值变量 int maxValue = a[0][0], minValue = a[0][0]; pair<int, int> maxPos(0, 0), minPos(0, 0); // 寻找最大值最小值以及它们的位置 for (int i = 0; i < rows; ++i) { for (int j = 0; j < cols; ++j) { if (a[i][j] > maxValue) { maxValue = a[i][j]; maxPos.first = i; maxPos.second = j; } if (a[i][j] < minValue) { minValue = a[i][j]; minPos.first = i; minPos.second = j; } } } // 打印结果 cout << "最大值是:" << maxValue << ", 位于 (" << maxPos.first << "," << maxPos.second << ")" << endl; cout << "最小值是:" << minValue << ", 位于 (" << minPos.first << "," << minPos.second << ")" << endl; return 0; } ``` #### 说明 - 上述代码实现了对 `10x20` 的二维数组进行随机赋值,并寻找其中的最大值最小值[^1]。 - 利用了嵌套循环遍历整个二维数组,同时记录当前找到的最大值/最小值及其对应的行列索引。 - 结果会显示最大值最小值的具体数值及所在位置。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值