[Js articles] JS merge sort

function mergeSort(arr) {
    
    
  if (arr.length <= 1) {
    
    
    return arr;
  }
  let middle = Math.floor(arr.length / 2);
  let left = arr.slice(0, middle);
  let right = arr.slice(middle);
  return merge(mergeSort(left), mergeSort(right));
}

function merge(left, right) {
    
    
  let result = [];
  while (left.length && right.length) {
    
    
    if (left[0] <= right[0]) {
    
    
      result.push(left.shift());
    } else {
    
    
      result.push(right.shift());
    }
  }
  while (left.length) {
    
    
    result.push(left.shift());
  }
  while (right.length) {
    
    
    result.push(right.shift());
  }
  return result;
}

Guess you like

Origin blog.csdn.net/s398511733/article/details/130562642