Java 从最高到最低排序数组 /** *@param指定命令行参数 */ 公共静态void main(字符串[]args){ int[]x; x=新整数[3]; x[0]=4; x[1]=1; x[2]=2; x[3]=3; x=sortArray(x); System.out.println(x[2]); } 公共静态int indexOfMaxInRange(int[]A,int i){ int maxIndex=A[0]; while(imaxIndex){ maxIndex=A[i]; } i++; } 返回最大索引; } 公共静态int[]swapElement(int[]A,int i1,int i2){ int i1value=A[i1]; int i2value=A[i2]; A[i1]=A[i2]值; A[i2]=A[i1值]; 返回A; } 公共静态int[]sortArray(int[]A){ for(int i=0;i
这会不断出现错误。 我似乎找不到我的程序有什么问题。Java 从最高到最低排序数组 /** *@param指定命令行参数 */ 公共静态void main(字符串[]args){ int[]x; x=新整数[3]; x[0]=4; x[1]=1; x[2]=2; x[3]=3; x=sortArray(x); System.out.println(x[2]); } 公共静态int indexOfMaxInRange(int[]A,int i){ int maxIndex=A[0]; while(imaxIndex){ maxIndex=A[i]; } i++; } 返回最大索引; } 公共静态int[]swapElement(int[]A,int i1,int i2){ int i1value=A[i1]; int i2value=A[i2]; A[i1]=A[i2]值; A[i2]=A[i1值]; 返回A; } 公共静态int[]sortArray(int[]A){ for(int i=0;i,java,arrays,Java,Arrays,这会不断出现错误。 我似乎找不到我的程序有什么问题。 该程序的目标是对数组进行从高到低的排序。让我们从x[3]=3开始。因为您声明x的大小为3,所以最大索引为2。这可能是您最初的错误,ArrayIndexOutOfBoundsError-这基本上意味着您试图为数组的索引分配一个不在[0,len(array)-1]范围内的值。因此,要么增加数组的大小,要么不为索引3分配元素 另外,为了将来的参考,让我们知道你得到了什么错误会很有帮助 调用函数时,函数名和左括号之间尽量不要有空格。我相信它仍然可以编
该程序的目标是对数组进行从高到低的排序。让我们从x[3]=3开始。因为您声明x的大小为3,所以最大索引为2。这可能是您最初的错误,ArrayIndexOutOfBoundsError-这基本上意味着您试图为数组的索引分配一个不在[0,len(array)-1]范围内的值。因此,要么增加数组的大小,要么不为索引3分配元素 另外,为了将来的参考,让我们知道你得到了什么错误会很有帮助 调用函数时,函数名和左括号之间尽量不要有空格。我相信它仍然可以编译,但读起来很奇怪。另外,在等号周围添加空格。例如:
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
int[] x;
x= new int [3];
x[0]=4;
x[1]=1;
x[2]=2;
x[3]=3;
x=sortArray (x);
System.out.println (x[2]);
}
public static int indexOfMaxInRange(int[] A, int i){
int maxIndex=A[0];
while (i < A.length) {
if (A[i]>maxIndex){
maxIndex= A[i];
}
i++;
}
return maxIndex;
}
public static int[] swapElement (int[] A,int i1,int i2) {
int i1value=A[i1];
int i2value=A[i2];
A[i1]=A[i2value];
A[i2]=A[i1value];
return A;
}
public static int[] sortArray (int[] A) {
for (int i = 0; i < A.length; i++) {
int x=indexOfMaxInRange (A,i);
swapElement (A,x,i);
}
return A;
}
应该是:
int x=indexOfMaxInRange (A,i);
从我收集的信息来看,您正在实现选择排序,在这里,您可以获得整个数组的最大值,将其作为第一个元素,并查找数组中的最高值,同时忽略第一个元素并将该元素作为数组中的第二个元素。等等等等
交换函数看起来和sortArray函数一样好,但是,indexmaxfrange函数不正确。我将让您自己修复该函数,但我要说的是,IndexMaxFrange期望返回一个索引,并且在该函数中的任何位置都没有指定maxIndex作为索引 您确实应该说明错误是什么,但在swapElement方法中它看起来像是索引超出范围的错误,因为您使用数组中的值作为索引。还要注意,您的算法是O(n^2),因为您从序列的开始处对序列的每个元素进行迭代。你得到了几张反对票——可能是因为像“为什么这段代码不起作用”这样的问题应该包括一个明确的问题定义:出了什么问题,包括任何错误或错误的输出,以及重现问题所需的最低完整代码示例。检查并考虑编辑你的问题:)你可能应该包括错误的地方,以及你怀疑错误的地方。
int x = indexOfMaxInRange(A,i);