Java 如何在单个数组中打印数组函数?
我正在尝试实现合并排序、快速排序、二进制搜索和插值搜索功能 我已经找到了两个搜索函数,我的合并排序和快速排序方法的代码基本上已经完成。我想我的打印语句有问题,因为我只想打印最后的数组 当我运行代码时,我得到一个错误,它已经超出了界限,因为每次调用该方法时,它也会重新打印该函数。我只想打印这两种方法的最终排序数组 我只需要弄清楚如何将这两个方法中的排序数组打印成一个数组(每个方法)来显示排序列表。我试图转换方法调用以返回值并将它们输入到数组中,但我不确定这是否可以实现Java 如何在单个数组中打印数组函数?,java,arrays,quicksort,mergesort,Java,Arrays,Quicksort,Mergesort,我正在尝试实现合并排序、快速排序、二进制搜索和插值搜索功能 我已经找到了两个搜索函数,我的合并排序和快速排序方法的代码基本上已经完成。我想我的打印语句有问题,因为我只想打印最后的数组 当我运行代码时,我得到一个错误,它已经超出了界限,因为每次调用该方法时,它也会重新打印该函数。我只想打印这两种方法的最终排序数组 我只需要弄清楚如何将这两个方法中的排序数组打印成一个数组(每个方法)来显示排序列表。我试图转换方法调用以返回值并将它们输入到数组中,但我不确定这是否可以实现 public static
public static void merge_sort(int A[], int l, int r){
if(l < r){
int m = (l + r)/2;
merge_sort(A, l, m);
merge_sort(A, m + 1, r);
merge(A, l, m, r);
}
System.out.println("Merge sorted array:" + Arrays.toString(A));
}
public static void merge(int A[], int l, int m, int r){
int n1 = m - l + 1;
int n2 = r - m;
int L[] = new int [n1];
int R[] = new int [n2];
for(int i = 0; i < n1; i++){
L[i] = A[l + i];
}
for(int j = 0; j < n2; j++){
R[j] = A[m + 1 + j];
}
int i = 0;
int j = 0;
int k = 1;
while(i < n1 && j < n2){
if(L[i] <= R[j]){
A[k] = L[i];
i++;
}
else{
A[k] = R[j];
j++;
}
k++;
}
while(i < n1){
A[k] = L[i];
i++;
k++;
}
while(j < n2){
A[k] = R[j];
j++;
k++;
}
}
public static void quick_sort(int A[], int l, int r){
if(l < r){
int i = partition(A, l, r);
quick_sort(A, l, i - 1);
quick_sort(A, i + 1, r);
}
System.out.println("Quick sort of Array: " + Arrays.toString(A));
}
public static int partition(int A[], int l, int r){
int pivot = A[r];
int i = (l - 1);
for(int j = l; j < r; j++){
if(A[j] <= pivot){
i++;
int temp = A[i];
A[i] = A[j];
A[j] = temp;
}
}
int temp = A[i + 1];
A[i + 1] = A[r];
A[r] = temp;
return i + 1;
}
// this is the methods
// below is the portion of my main that calls the two sort functions
int left = 0;
int right = 14;
int size = 15;
//int[] quick = new int[15];
//int[] merge = new int[15];
quick_sort(intArray, left, right);
merge_sort(intArray, left, right);
publicstaticvoidmerge\u排序(inta[],intl,intr){
if(l 如果(L[i]不在排序方法内部打印
让调用者打印合并的结果。它是关于,也就是说,一个方法应该只关注一件事
在这种情况下,排序方法应该只执行排序,而不执行打印。打印结果超出了排序方法应该执行的范围。好的,那么如何打印这些?我不能在方法调用周围放置打印语句,因为它们都是无效方法。那么,我是否将它们放在每个方法调用之后?好的,因此我在rneath方法调用。这起作用并修复了快速排序。但是,我在合并排序中遇到了另一个问题。这是以下错误:线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:HW3.merge(HW3.java:60)中的15在HW3.merge_sort(HW3.java:17)在HW3.main(HW3.java:160)中,以下是发生错误的行:while(j