Java新手求助:获取数组最小与第二小元素方法逻辑详解
解释Java方法
getTwoSmallest的实现逻辑 先明确这个方法的基础信息:
- 修饰符:
private(仅当前类可调用)、非static(必须通过类的实例调用) - 返回值:
void(不返回数据,通常是在方法内部输出结果或修改类成员变量) - 参数:
int[] num(待处理的整数数组) - 核心功能:找出数组里的最小元素和第二小元素
结合测试数据int num[] = {24,4222,61,8,55,129},下面拆解它的实现逻辑:
1. 初始化最小/第二小变量
首先要给smallest(最小元素)和secondSmallest(第二小元素)赋初始值,常见的稳妥做法是:
- 先取数组前两个元素比较,把较小的赋值给
smallest,较大的赋值给secondSmallest。针对测试数组,前两个元素是24和4222,所以初始smallest = 24,secondSmallest = 4222。 - 也可以直接把两个变量初始化为
Integer.MAX_VALUE(整数最大值),这样能兼容数组第一个元素就是最小值的情况,不过前者更直观。
2. 遍历数组剩余元素
从数组的第三个元素开始(索引2,对应值61),逐个和当前的smallest、secondSmallest比较,按照规则更新变量:
- 情况1:当前元素比
smallest小
比如遍历到值8的时候,8 < 24(当前smallest):- 先把原来的
smallest(24)赋值给secondSmallest(因为原来的最小值现在变成了第二小) - 再把当前元素8赋值给
smallest
此时smallest = 8,secondSmallest = 24。
- 先把原来的
- 情况2:当前元素比
smallest大,但比secondSmallest小
比如如果数组里有16,那16 > 8但 <24,这时候直接把16赋值给secondSmallest。 - 情况3:当前元素比
secondSmallest大
比如测试数组里的61、55、129,都比24大,所以不做任何更新。
3. 输出或存储结果
因为方法返回void,所以最后会在方法内部处理结果:要么直接用System.out.println()打印出“最小元素为8,第二小元素为24”,要么把这两个值赋值给当前类的成员变量,供其他方法使用。
注意事项
- 要先判断数组是否为空或长度小于2:如果数组长度是0或1,没法找出两个最小元素,通常会抛出异常或打印提示信息。
- 如果数组里有重复的最小值(比如
{8,8,24}),那第二小元素还是8,逻辑上要兼容这种场景。
内容的提问来源于stack exchange,提问作者ahmed aly
相关产品推荐
相关产品推荐

