我正在嘗試實現合并排序、快速排序、二進制搜索和插值搜索功能。我已經弄清楚了這兩個搜索功能,我的合并排序和快速排序方法的代碼基本完成了。我認為我的打印語句有問題,因為我只想打印最終數組。當我運行代碼時,我得到它已經超出范圍的錯誤,因為每次調用該方法時,它也會重新打印該函數。我只想打印這兩種方法的最終排序數組。我只需要弄清楚如何將這兩種方法中的排序數組打印為一個顯示排序列表的數組(每個方法)。我嘗試將方法調用轉換為返回值并將它們輸入到數組中,但我不確定是否可以做到這一點。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);對于合并排序和快速排序方法,我希望輸出看起來像數組排序元素。
如何在一個數組中打印數組函數?
慕的地8271018
2022-06-23 09:19:39