Java 数组元素,排列和识别元素
我怎样才能找到数组中的第二大元素,这是我的代码,但我无法找出问题所在,非常感谢您的帮助Java 数组元素,排列和识别元素,java,arrays,algorithm,Java,Arrays,Algorithm,我怎样才能找到数组中的第二大元素,这是我的代码,但我无法找出问题所在,非常感谢您的帮助 import java.util.Arrays; import java.util.Random; public class NDlargest { Random random = new Random(); private int[] array = new int[10]; private int largest; private int largest2; p
import java.util.Arrays;
import java.util.Random;
public class NDlargest
{
Random random = new Random();
private int[] array = new int[10];
private int largest;
private int largest2;
public NDlargest()
{
largest = 0;
largest2 = 0;
for (int i =0; i< array.length; i++)
{
array[i] = 1 + random.nextInt(100);
}
System.out.println(Arrays.toString(array));
}
public int getLargest()
{
for (int i = 0; i < array.length; i++)
{
int number = array[i];
if (number > largest)
{
largest = number;
}
}
return largest;
}
public int getSecondLargest()
{
for (int i = 0; i < array.length; i++)
{
int number2 = array[i];
if (largest2 < largest)
{
if (number2 > largest2)
{
largest2 = number2;
}
}
else
{
break;
}
}
return largest2;
}}
导入java.util.array;
导入java.util.Random;
公共类
{
随机=新随机();
私有int[]数组=新int[10];
私营机构;
私人国际最大2;
公共数据最大值()
{
最大值=0;
最大值2=0;
for(int i=0;i最大值)
{
最大=数量;
}
}
回报最大;
}
public int getsecond最大值()
{
for(int i=0;i最大值2)
{
最大2=数字2;
}
}
其他的
{
打破
}
}
返回最大值2;
}}
更改您的getSecondMaximum()
代码如下:
public int getSecondLargest() {
Arrays.sort(array);
largest2=array[array.length-2];
return largest2;
}
将您的
getSecondMaximum()
代码更改为:
public int getSecondLargest() {
Arrays.sort(array);
largest2=array[array.length-2];
return largest2;
}
首先要问为什么在查找第二大数字的代码中需要中断?基本上,你能在不查看列表中所有数字的情况下找到第二大数字吗
然后,要了解在列表中查找第k个元素而不进行排序的一般解决方案,请参阅 首先要问为什么在查找第二大数字的代码中需要中断?基本上,你能在不查看列表中所有数字的情况下找到第二大数字吗 然后,要了解在列表中查找第k个元素而不进行排序的一般解决方案,请参阅
int number2=数组[i];
//问题就在这里
如果(最大值2<最大值)
请替换为以下内容
int number2 = array[i];
if (number2 < largest)
int number2=数组[i];
如果(数字2<最大值)
你的方法的小优化版本
public int getLargest()
{
for (int i = 0; i < array.length; i++)
{
if (array[i] > largest)
{
largest = array[i];
}
}
return largest;
}
public int getSecondLargest()
{
for (int i = 0; i < array.length; i++)
{
if (array[i] < largest)
{
if (array[i] > largest2)
{
largest2 = array[i];
}
}
}
return largest2;
}
public int getmax()
{
for(int i=0;i最大值)
{
最大=数组[i];
}
}
回报最大;
}
public int getsecond最大值()
{
for(int i=0;ilargest2)
{
最大值2=数组[i];
}
}
}
返回最大值2;
}
int number2=数组[i];
//问题就在这里
如果(最大值2<最大值)
请替换为以下内容
int number2 = array[i];
if (number2 < largest)
int number2=数组[i];
如果(数字2<最大值)
你的方法的小优化版本
public int getLargest()
{
for (int i = 0; i < array.length; i++)
{
if (array[i] > largest)
{
largest = array[i];
}
}
return largest;
}
public int getSecondLargest()
{
for (int i = 0; i < array.length; i++)
{
if (array[i] < largest)
{
if (array[i] > largest2)
{
largest2 = array[i];
}
}
}
return largest2;
}
public int getmax()
{
for(int i=0;i最大值)
{
最大=数组[i];
}
}
回报最大;
}
public int getsecond最大值()
{
for(int i=0;ilargest2)
{
最大值2=数组[i];
}
}
}
返回最大值2;
}
只需调用Arrays.sort(array)
对数组进行排序,然后在array.length-2
处获取元素。GetSecondMaximum将始终返回最大值number@justhalf你从哪儿弄来的?这是几天来最有趣、最精辟的观察:D我发现在实践中,它是一个优秀的调试器、代码生成器和许多其他东西(代码美化器、重构器)。我认为这是个好主意!嗯,我不知道我从哪里得到的,我记得我在某处看到过这个说法。哈哈。就像IDE中的SO=)一样,只需通过调用array.sort(array)
对数组进行排序,然后在array.length-2
处获取元素。GetSecondMaximum将始终返回最大值number@justhalf你从哪儿弄来的?这是几天来最有趣、最精辟的观察:D我发现在实践中,它是一个优秀的调试器、代码生成器和许多其他东西(代码美化器、重构器)。我认为这是个好主意!嗯,我不知道我从哪里得到的,我记得我在某处看到过这个说法。哈哈。就像您的IDE想法中的SO=)“不查看列表中的所有数字”可能您的意思是“不排序列表中的所有数字”“不查看列表中的所有数字”可能您的意思是“不排序列表中的所有数字”如果你能添加一些解释就最好了如果你能添加一些解释就最好了我不想使用arrayList。我导入arraylist只是因为我想打印数组。谢谢你的帮助!!!我只是在练习,我不想用arrayList。我导入arraylist只是因为我想打印数组。谢谢你的帮助!!!我只是在练习