第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

合并排序,合并期間數(shù)組重新排列。

合并排序,合并期間數(shù)組重新排列。

小唯快跑啊 2021-11-11 14:22:13
我的數(shù)組在合并排序時遇到了一些麻煩。在我遇到的每種情況下,合并都可以正常工作,直到它遇到遞歸方法并將先前合并的數(shù)組發(fā)回。大多數(shù)情況下,它重新排列已經排序的數(shù)組并弄亂了第二個合并方法。例如: (3)(2)(1)(4) -> (2,3)(1,4) -> (1,3,2,4) 將是一個可能的結果。我做錯了什么可能導致這種情況?public static int[] mergeSort(int[] numbers) {     if (numbers.length == 1) {       return numbers; }     int[] leftSide = new int[numbers.length/2];     int[] rightSide = new int[numbers.length-leftSide.length];     System.arraycopy(numbers,0,leftSide,0,leftSide.length);     System.arraycopy(numbers,leftSide.length,rightSide,0,rightSide.length);     mergeSort(leftSide);     mergeSort(rightSide);     displayArray(leftSide);     displayArray(rightSide);     numbers = merge(leftSide,rightSide);     System.out.println("=============");     return numbers;   }   public static int[] merge(int[] left, int[] right) {     int[] temp = new int[left.length+right.length];     int l = 0;     int r = 0;     int t = 0;     while (l < left.length && r < right.length) {       if (left[l] > right[r]) {         temp[t] = right[r];         r++;         t++; }       else {         temp[t] = left[l];         l++;          t++; }     }//while     while (l < left.length) {       temp[t] = left[l];         l++;         t++; }     while (r < right.length) {         temp[t] = right[r];         r++;          t++; }     displayArray(temp);     return temp;   }
查看完整描述

1 回答

?
ibeautiful

TA貢獻1993條經驗 獲得超6個贊

mergeSort 函數(shù)返回一個排序的數(shù)組,我們沒有跟蹤它。由于已排序的數(shù)組(左和右)丟失,合并函數(shù)再次選取未排序的左右數(shù)組。解決方法是更新


mergeSort(leftSide);

mergeSort(rightSide);


leftSide = mergeSort(leftSide);

rightSide = mergeSort(rightSide);

這會將它們更新為各自的排序值


查看完整回答
反對 回復 2021-11-11
  • 1 回答
  • 0 關注
  • 187 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號