Java 删除数组中的最大元素
编写了一些代码,尝试在未排序的数组中查找最大元素,然后将其从数组中删除。我的第一个循环具有查找最大元素的逻辑,而第二个循环应该从第一个循环中获取变量,向前看一个空格,然后插入到最大元素中 我下面的代码似乎适用于我的第二个想法。。但找不到正确的max数组元素 我的数组有以下值{6,3,5,2,7,9,4}。它发现最大数组元素为7。。应该是9点Java 删除数组中的最大元素,java,arrays,Java,Arrays,编写了一些代码,尝试在未排序的数组中查找最大元素,然后将其从数组中删除。我的第一个循环具有查找最大元素的逻辑,而第二个循环应该从第一个循环中获取变量,向前看一个空格,然后插入到最大元素中 我下面的代码似乎适用于我的第二个想法。。但找不到正确的max数组元素 我的数组有以下值{6,3,5,2,7,9,4}。它发现最大数组元素为7。。应该是9点 public void deleteMax() { // set value for comparison starting from the b
public void deleteMax() {
// set value for comparison starting from the beginning of the array
int arrayMax = arr[0];
for (int i = 0; i < nElems; i++) {
if (arr[i] > arrayMax) {
arrayMax = arr[i];
for (int k = i; k < nElems; k++) {
arr[k] = arr[k + 1];
nElems--;
break;
}
}
}
}
public void deleteMax(){
//设置从数组开头开始的比较值
int arrayMax=arr[0];
for(int i=0;iarrayMax){
arrayMax=arr[i];
for(int k=i;k
为什么不使用jQuery$.grep和Math.max,比如:
var arr = [6, 3, 5, 2, 7, 9, 4];
var maxNum = Math.max.apply(null, arr);
var newArr = $.grep( arr, function( n ) {
return n != maxNum;
});
console.log(newArr);
编辑:
嗯,我没有意识到您正在使用Java,正如JavaScript部分所显示的问题
在Java中,可以在数组中找到max number,如
int maxNum = arr.get(0); // get the first number in array
for (int i = 1; i < arr.length; i++) {
if ( arr.get(i) > maxNum) {
maxNum = array.get(i);
}
}
arr.remove(maxNum);
int maxNum=arr.get(0);//获取数组中的第一个数字
对于(int i=1;imaxNum){
maxNum=array.get(i);
}
}
arr.remove(maxNum);
嗯,您不需要任何第二个循环
只有一个循环和两个变量称为f.ex。MaxElementPosition和MaxElementValue,如果此位置上的数字大于上一个MaxElementValue,则每次在循环内都会更新,同时更新值和位置
而在循环中,您确实需要用于比较的值。最后你只需要位置。你的内部循环是不相关的,你只有一个1D数组,所以做任何内部迭代都没有意义 如果坚持对数组执行no
排序
,则可以执行以下操作:
public void deleteMax() {
// set value for comparison starting from the beginning of the array
int arrayMax = arr[0];
int maxIndex = 0;
for (int i = 0; i < nElems; i++) {
if (arr[i] > arrayMax) {
arrayMax = arr[i];
maxIndex = i;
}
}
arr.remove(maxIndex);
}
public void deleteMax(){
//设置从数组开头开始的比较值
int arrayMax=arr[0];
int maxIndex=0;
for(int i=0;iarrayMax){
arrayMax=arr[i];
maxIndex=i;
}
}
arr.remove(最大索引);
}
一旦的
循环完成,我们将删除maxIndex处的项@Alex在正确的轨道上,但是在java中没有可以在数组上调用的remove函数。您所需要的只是他得到的变量maxIndex,这当然是这个最大值的第一次出现,所以如果您需要删除每个最大值的出现,那将是一个不同的问题。因此,一旦您使用@Alex代码:
int arrayMax = arr[0];
int maxIndex = 0;
for (int i = 0; i < nElems; i++) {
if (arr[i] > arrayMax) {
arrayMax = arr[i];
maxIndex = i;
}
}
int-arrayMax=arr[0];
int maxIndex=0;
for(int i=0;iarrayMax){
arrayMax=arr[i];
maxIndex=i;
}
}
如果使用ArrayList而不是数组,这将更容易,在这种情况下,代码如下所示:
int arrayMax = arr.get(0);
int maxIndex = 0;
for (int i = 0; i < nElems; i++) {
if (arr[i] > arrayMax) {
arrayMax = arr[i];
maxIndex = i;
}
}
arr.remove(maxIndex);
int-arrayMax=arr.get(0);
int maxIndex=0;
for(int i=0;iarrayMax){
arrayMax=arr[i];
maxIndex=i;
}
}
arr.remove(最大索引);
否则,必须创建临时数组以删除该值:
int[] temp = new int[arr.length-1];
for(int i = 0, index = 0; index < nElems; i++, index++)
{
if(index == maxIndex) index++;
temp[i] = arr[index];
}
arr = temp;
int[]temp=new int[arr.length-1];
for(inti=0,index=0;index
对数组进行排序()
然后获取第一个元素不是更容易吗?类似于var max=ari.sort(函数(a,b){returna>b;}).pop()代码>数组必须不排序..为什么在做算术时它必须不排序?@Chewy如果它不能排序,可以减少吗arr.reduce(函数(a,b){返回a>b?a:b;})代码>@Joe过滤器:它的!=,!=无法使用:)确定。。我不能从max开始获取下一个元素,然后用arr[I+1]交换max吗。我该怎么做?你为什么要这么做?这将始终具有最大值及其相应的索引,您可以随时删除它们-不需要任何额外的复杂性