JavaScript程式碼中的合併排序問題:儘管經過調試,仍無法解決錯誤
P粉256487077
2023-08-18 14:25:39
<p>我正在嘗試理解所有的排序演算法,這是我為歸併排序編寫的程式碼,但它不起作用,你能指出其中的錯誤嗎:</p>
<pre class="brush:php;toolbar:false;">solve: function (A) {
let count = this.mergeSort(A);
return count;
},
mergeTwoSortedArrays: function (A, B) {
let i = 0;
let j = 0;
let k = 0;
let C = [];
while (i < A.length && j < B.length && A[i] || B[j]) {
if (A[i] < B[j]) {
C[k] = A[i];
i ;
k ;
}
else {
C[k] = B[j];
j ;
k ;
}
}
while (j < B.length) {
C[k] = B[j];
k ;
j ;
}
while (i < A.length) {
C[k] = A[i];
k ;
i ;
}
return C;
},
mergeSort: function (a) {
let n = a.length;
if (n <= 1) return a;
let c = Array.from({ length: Math.floor(n / 2) }, (_, i) => a[i]);
let d = Array.from({ length: n - c.length }, (_, i) => a[c.length i]);
return this.mergeTwoSortedArrays(c, d);
}</pre>
<p>好吧,問題要求我添加更多細節才能通過審批。
所以我的方法是:將數組分成兩個相等的部分,直到它們變成一個元素的數組,然後使用合併技術將兩個排序好的數字組合並。 </p>
你應該簡單地將 i < A.length && j < B.length 作為循環條件進行檢查。
這是你更新後的程式碼: