Java 数组排序获取错误 class-arr{ //数组排序以查找最大值 公共静态void main(字符串[]args){ int[]数组={1,6,4,5,2}; int n; int i,j; 对于(i=0;i 有谁能告诉我为什么会出现运行时错误,而这种排序方法是否有效
Java 数组排序获取错误 class-arr{ //数组排序以查找最大值 公共静态void main(字符串[]args){ int[]数组={1,6,4,5,2}; int n; int i,j; 对于(i=0;i 有谁能告诉我为什么会出现运行时错误,而这种排序方法是否有效,java,arrays,sorting,Java,Arrays,Sorting,由于第二个循环: class arr{ //array sorting to find maximum value public static void main(String[]args){ int[] array={1,6,4,5,2}; int n; int i,j; for( i=0;i<(array.length*2);i++){ for( j=0;j<array.length;j++){ if(arr
由于第二个循环:
class arr{
//array sorting to find maximum value
public static void main(String[]args){
int[] array={1,6,4,5,2};
int n;
int i,j;
for( i=0;i<(array.length*2);i++){
for( j=0;j<array.length;j++){
if(array[j]>array[j+1]){
array[j]=array[j+1];
array[j+1]=array[j];
}
}
}
System.out.println(array[array.length]);
}
(j=0;jarray[j+1]){
数组[j]=数组[j+1];
数组[j+1]=数组[j];
}
}
J
在数组中循环,然后尝试将数组索引到J+1
,数组中最后一个元素上的索引会将其推出边界,从而抛出一个超出边界的异常
不要重新发明轮子。您可以使用数组,因此也可以使用数组帮助类。。。
:-)
(j=0;jarray[j+1]){
数组[j]=数组[j+1];
数组[j+1]=数组[j];
}
}
intx;
对于(j=0;jarray[j+1]){
x=阵列[j];
数组[j]=数组[j+1];
数组[j+1]=x;
}
}
气泡排序算法可以实现如下
int x;
for( j=0;j<array.length - 1;j++){
if(array[j]>array[j+1]){
x = array[j];
array[j]=array[j+1];
array[j+1]=x;
}
}
公共静态无效排序(int[]arr){
int len=arr.length;
int k=0;
对于(int j=0;j if(arr[i]如果出现运行时错误,则此排序方法将不起作用。@apomene此代码中有哪些更正?那么……您的运行时错误是什么?我假设您由于数组[j+1]而出现数组越界异常调用,假设当j=array.length-1时该元素不存在。您正试图通过该调用访问数组边界之外的元素。将for循环更改为jpublic static void main(String[] args) {
final int[] array = { 1, 6, 4, 5, 2 };
System.out.println("Array before sort " + Arrays.toString(array));
Arrays.sort(array);
System.out.println("Array before sort " + Arrays.toString(array));
}
for( j=0;j<array.length;j++){
if(array[j]>array[j+1]){
array[j]=array[j+1];
array[j+1]=array[j];
}
}
int x;
for( j=0;j<array.length - 1;j++){
if(array[j]>array[j+1]){
x = array[j];
array[j]=array[j+1];
array[j+1]=x;
}
}
public static void sort(int[] arr){
int len = arr.length;
int k = 0;
for(int j = 0 ; j < len-1; j++){
for(int i= 0+k; i < len-1; i += 2){
if(arr[i] <= arr[i+1])
continue;
int tmp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = tmp;
}
k++;
if ( k % 2 == 0)
k = 0;
} }