Mergesortは、合併運用に基づいた効果的で安定した並べ替えアルゴリズムです。このアルゴリズムは、Divide and Conquerの非常に典型的なアプリケーションです。既存の後続のシーケンスをマージして、完全に秩序あるシーケンスを取得します。つまり、各サブシーケンスのシーケンスは秩序です。その後、後続のシーケンスセグメントは秩序です。合併とソートのアルゴリズムの複雑な読み取りは、安定したソートアルゴリズムであるO（nlogn）です。

「JS」
function mergesort（array）{
  const half = array.length / 2
  
  if（array.length <2）{{
    アレイを返します
  }
  
  const left = array.splice（0、半）
  MERGE（MERGESORT（左）、MergESORT（配列））を返す
}

// 2つのオーダーサブアレイ（左、右）マージマージ
関数マージ（左、右）{{
    reet arr = []
    //配列が空の場合は、ループを終了します
    while（left.length && rigk.length）{{
        //左右の配列の最小要素から小さな要素を選択します
        if（left [0] <右[0]）{{
            arr.push（left.shift（））
        } それ以外 {
            arr.push（right.shift（））
        }
    }
    
    //残りの要素を接続して、2つの配列が完全に移動しないようにします
    return [... arr、...左、...右]
}


`` `
归并排序（MergeSort）是建立在归并操作上的一种有效，稳定的排序算法，该算法是采用分治法（Divide and Conquer）的一个非常典型的应用。将已有序的子序列合并，得到完全有序的序列；即先使每个子序列有序，再使子序列段间有序。归并排序的算法时间复杂读为O(NLogN)，是一种稳定的排序算法。

```js
function mergeSort(array) {
  const half = array.length / 2
  
  if(array.length < 2){
    return array 
  }
  
  const left = array.splice(0, half)
  return merge(mergeSort(left),mergeSort(array))
}

// 把两个排好序的子数组（left、right）合并来获得一个排好序的大数组
function merge(left, right) {
    let arr = []
    // 如果任何一个数组为空，就退出循环
    while (left.length && right.length) {
        // 从左右子数组的最小元素中选择较小的元素
        if (left[0] < right[0]) {
            arr.push(left.shift())  
        } else {
            arr.push(right.shift()) 
        }
    }
    
    // 连接剩余的元素，防止没有把两个数组遍历完整
    return [ ...arr, ...left, ...right ]
}


```