JavaScript程式碼中的合併排序問題:儘管經過調試,仍無法解決錯誤
P粉256487077
P粉256487077 2023-08-18 14:25:39
0
1
590
<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>
P粉256487077
P粉256487077

全部回覆(1)
P粉068510991

你應該簡單地將 i < A.length && j < B.length 作為循環條件進行檢查。

這是你更新後的程式碼:

const mergeSort = {
  solve: function (A) {
    return this.mergeSortFunction(A);
  },
  mergeTwoSortedArrays: function (A, B) {
    let i = 0;
    let j = 0;
    let k = 0;
    let C = [];
    while (i < A.length && j < B.length) {
      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;
  },
  mergeSortFunction: 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(this.mergeSortFunction(c), this.mergeSortFunction(d));
  }
};

// 示例
const inputArray = [38, 27, 43, 3, 9, 82, 10];
const sortedArray = mergeSort.solve(inputArray);
console.log(sortedArray); 
// 输出:[3, 9, 10, 27, 38, 43, 82]
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!