0
我有一個小問題。 我嘗試實現合併排序算法遞歸。Java MergeSort算法遞歸
int sort_list[] = {5, 9, 7, 8, 3, 4, 5, 6, 1, 0};
int[] left = new int[sort_list.length];
int[] right = new int[sort_list.length];
public Mergesort() {
int[] lv_sorted_list = mergeSort(sort_list);
for (int i = 0; i < lv_sorted_list.length; i++) {
System.out.print(" " + lv_sorted_list[i] + ", ");
}
}
int[] mergeSort(int[] iv_sort_list) {
for (int i = 0; i < iv_sort_list.length; i++) {
System.out.print("Divide: " + iv_sort_list[i] + " ");
}
System.out.println("");
if (iv_sort_list.length > 1) {
left = mergeSort(Arrays.copyOfRange(iv_sort_list, 0, iv_sort_list.length/2));
right = mergeSort(Arrays.copyOfRange(iv_sort_list, iv_sort_list.length/2, iv_sort_list.length));
}
int i = 0;
int j = 0;
int[] sorted_list = new int[left.length + right.length];
while (i < left.length && j < right.length) {
if (left[i] > right[j]) {
int tmp = left[i];
left[i] = right[j];
right[j] = tmp;
System.arraycopy(left, 0, sorted_list, 0, left.length);
System.arraycopy(right, 0, sorted_list, left.length, right.length);
i++;
j++;
}else{
break;
}
return sorted_list;
}
現在我的問題:
left = mergeSort(Arrays.copyOfRange(iv_sort_list, 0, iv_sort_list.length)); right = mergeSort(Arrays.copyOfRange(iv_sort_list, iv_sort_list.length, iv_sort_list.length));
如果我嘗試分配我的左/右陣列「歸併(......)」,那麼它將只分配了新的新數組長,其中包含在每個位置值0
非常感謝您的幫助:)
非常感謝你的幫助,你的演示:) 我會嘗試理解它並通過我自己的方式實現它 – Reptain
@沒有問題,請告訴我你是否需要更多幫助 – shole