java 取出int数组中的最大值及下标,取出集合中最大值 ,最小值

package index;

//取出int数组中的最大值及下标
import java.util.Arrays;

import javax.naming.InitialContext;

public class Test {

	public static void main(String[] args) {
		int[] arr = { 0, 45, 14, 85, 12, 14, 7, 25, 85, 14, 555, 111, 222, 51, 785, 2, 36 };

		int max = 0;
		int maxIndex = 0;

		for (int i = 0; i < arr.length; i++) {

			if (arr[i] > max) {
				max = arr[i];
				maxIndex = i;
			}
		}
		System.out.println(max + "----" + maxIndex);

		
	}

	
}

在这里插入图片描述

//取出集合中最大值 ,最小值 
public static void main(String args[]) 
     {        //Double[] num = { 45.1,45.2 };
              List dlist=new ArrayList();
              dlist.add(45.1);
              dlist.add(45.2);
              dlist.add(110.22);
              Double max = (Double)dlist.get(0);     
              Double min = (Double)dlist.get(0); 
            for (int i = 0; i < dlist.size(); i++) {          
                      if (min > (Double)dlist.get(i)) min = (Double)dlist.get(i);   
                       if (max < (Double)dlist.get(i)) max = (Double)dlist.get(i);        
               }        
                        System.out.println("max的值为" + max + "min的值为" + min);    
      }
<think>我们被要求用C语言编写程序,查找整型数组中的最大值最小值及其对应的下标。 根据引用[3]和引用[4]中的示例,我们可以采用以下步骤: 1. 假设数组的第一个元素既是最大值也是最小值,记录其值和下标(0)。 2. 遍历数组(从第二个元素开始),逐个与当前最大值最小值比较。 3. 如果找到更大的值,更新最大值及其下标;如果找到更小的值,更新最小值及其下标。 4. 遍历结束后,输出最大值最小值及其下标。 注意:数组可能有多个元素值相同,这里我们只要求第一个遇到的最大值最小值(或者根据题目要求,通常取第一个或最后一个)。但根据常规做法,我们取第一个遇到的最大值(即如果有多个最大值,我们取下标最小的那个)。但是,如果要求最后一个最大值,则可以在比较时使用>=或<=。不过题目没有特别说明,我们按常规取第一个最大值(即当有多个相同的最大值时,我们取最先遇到的那个,因为我们在比较时使用>和<,这样就不会更新为后面相同的值)。但是,如果我们希望取最后一个最大值,则可以在比较时使用>=,这样遇到相等的就更新,最后保留的是最后一个。但是题目没有明确,我们按照常规(取第一个最大值和第一个最小值)来写。 然而,引用[4]中,当有比当前最大值大的元素时,更新最大值及其下标;当有比当前最小值小的元素时,更新最小值及其下标。这样,最大值最小值都是第一个遇到的最大值最小值(因为初始化是第一个元素,后面只有比它大或小才更新,所以相同值不会更新,因此保留的是第一个最大值和第一个最小值)。但是,如果我们想得到最后一个最大值,可以在比较时,当遇到相等的值时,也更新下标(即使用>=和<=),这样就会更新为最后一个。 根据问题,用户没有特别说明,我们按常规(取第一个最大值和第一个最小值)来写。 我们写一个程序,同时查找最大值最小值及其下标,只需要一次遍历。 程序如下:</think>### C语言实现查找整型数组最大值最小值及其下标 以下是完整的C语言程序,用于查找整型数组中的最大值最小值及其对应下标: ```c #include <stdio.h> void findMinMax(int arr[], int size, int *max, int *min, int *maxIndex, int *minIndex) { // 初始化假设第一个元素是最大值最小值 *max = arr[0]; *min = arr[0]; *maxIndex = 0; *minIndex = 0; // 遍历数组查找极值 for (int i = 1; i < size; i++) { if (arr[i] > *max) { *max = arr[i]; *maxIndex = i; } if (arr[i] < *min) { *min = arr[i]; *minIndex = i; } } } int main() { int arr[] = {12, 45, 3, 67, 23, 9, 54, 32, 15}; int size = sizeof(arr) / sizeof(arr[0]); int max, min, maxIndex, minIndex; // 调用查找函数 findMinMax(arr, size, &max, &min, &maxIndex, &minIndex); // 输出结果 printf("数组元素:"); for (int i = 0; i < size; i++) { printf("%d ", arr[i]); } printf("\n最大值:%d,下标:%d\n", max, maxIndex); printf("最小值:%d,下标:%d\n", min, minIndex); return 0; } ``` #### 程序说明: 1. **核心函数 `findMinMax`**: - 参数:数组数组大小、最大值指针、最小值指针、最大值下标指针、最小值下标指针 - 初始化:假设第一个元素既是最大值也是最小值 - 遍历比较:从第二个元素开始比较更新极值 - 时间复杂度:$O(n)$(只需一次遍历) 2. **输出示例**: ``` 数组元素:12 45 3 67 23 9 54 32 15 最大值:67,下标:3 最小值:3,下标:2 ``` 3. **关键特性**: - 当存在多个相同极值时,返回最先出现的下标 - 使用指针传递结果,避免全局变量 - 通过 `sizeof` 自动计算数组长度 #### 注意事项: 1. 空数组检查:实际应用中应添加 `if (size == 0) return;` 防止空数组错误 2. 大数组处理:可优化为分治算法(如递归查找) 3. 相同极值:若需要最后一个极值下标,可将判断条件改为 `>=` 或 `<=` 此实现参考了数组极值查找的标准方法[^1][^3],通过单次遍历高效完成查找任务,适合教学和实际应用场景。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值