此程序是基本插入排序。我在第22和44行得到ArrayIndexOutOfBoundsException
。帮助我解决这个问题。如何从插入方法返回已排序的整个数组。
返回[]不工作........................................... ......
package analysis;
import java.util.*;
class Sort
{
int i,j,n,temp;
int a[] = new int[n];
int insertion(int a[],int n)
{
for (i=1;i<n;i++) {
j=i-1;
while (i>0 && a[j]>a[i]) {
temp = a[j];
a[j] = a[i];
a[i] = temp;
i--;
j--;
}
}
return a[n];
}
}
class Recurse
{
private static Scanner sc;
public static void main(String[] args)
{
System.out.println("enter array size");
int l,s;
sc = new Scanner(System.in);
s = sc.nextInt();
int b[] = new int[s];
int c[] = new int[s];
for (l=0;l<s;l++) {
b[l] = sc.nextInt();
}
Sort so = new Sort();
c[s] = so.insertion(b,s);
System.out.println("Sorted array is ");
for (l=0;l<s;l++) {
System.out.println(c[l]);
}
}
}
答案 0 :(得分:1)
您的代码的这两行会导致问题:
int a[] = new int[n];
return a[n];
返回n
索引处的元素是不可能的,因为索引包含从0
到n-1
的数字。
答案 1 :(得分:0)
在第44行,您尝试从c[l]
到0
访问s
,但您只声明c[s]