【发布时间】:2022-12-31 12:14:38
【问题描述】:
每次当我想要得到 3 时得到 0 的输出查看我的代码我不确定我哪里出错了我可以不使用我知道的方法但只是尝试练习 java
public class App {
public static int second(int a[],int n) {
int[] arr = new int [n];
int temp;
for(int i=0;i<n;i++) {
for(int j=i+1;j<n;j++) {
if(arr[i] > arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
return arr[n-2];
}
public static void main(String[] args) {
int[] arr = {1,3,2,5,3};
int n = 5;
int result = second(arr,n);
System.out.println(result);
}
}
【问题讨论】:
-
您正在对
arr进行排序,但其中没有任何值。要么排序并使用a,要么将a的值复制到arr。 -
此外,您的算法不适用于像
{1,2,5,3,5}这样的数组,因为有重复的 5。 -
注意:任何涉及排序的方法都至少是 O(n log n);你的是 O(n^2)。但是你可以在线性时间内找到数组中第二大的数字。