<分区>
我写了一个方法来找到数组中第二小的数字而不使用排序。我想我可以扩展相同的逻辑来找到数组中的第三小。但是我意识到它是没那么容易..我的大脑一定是因为 sleep 不足或其他原因而变得困惑..下面是我的 findSecondSmallest 和 findThirdSmallest 代码..有人可以纠正我后面逻辑中的缺陷吗?
public class ArrayElementSelection{
public static int findSecondSmallest(int[] a){
int N = a.length;
int min = 0;
int secondSmallest = 0;
for(int i=1;i<N;i++){
if(a[i] < a[min]){
secondSmallest = min;
min = i;
}else if(a[i] < a[secondSmallest]){
secondSmallest = i;
}
}
return a[secondSmallest];
}
public static int findThirdSmallest(int[] a){
int N = a.length;
int min = 0;
int secondSmallest = 0;
int thirdSmallest = 0;
for(int i=1;i<N;i++){
if(a[i] < a[min]){
min = i;
}else if(a[i] < a[secondSmallest]){
secondSmallest = i;
}else if(a[i]< a[thirdSmallest]){
thirdSmallest = i;
}
}
return a[thirdSmallest];
}
public static void main(String[] args) {
int[] a = new int[]{4,2,3,1,5};
System.out.println(findThirdSmallest(a));
}
}
>> 4