递归排序

javaScript 复制代码
function sort(arr) {
  let left = 0, right = arr.length - 1;
  if(arr.length === 1 || arr.length === 0) {
    return arr;
  }
  let mid = (left + right) >> 1;
  let leftArray = sort(arr.slice(left, mid + 1));
  let rightArray = sort(arr.slice(mid + 1));
  return merge(arr, leftArray, rightArray)
}
function merge(arr, leftArray, rightArray) {
  let leftLength = leftArray.length, leftIndex = 0;
  let rightLength = rightArray.length, rightIndex = 0;
  while(leftIndex < leftLength && rightIndex < rightLength) {
    if(leftArray[leftIndex] < rightArray[rightIndex]) {
      arr[leftIndex + rightIndex] = leftArray[leftIndex];
      leftIndex++;
    } else {
      arr[leftIndex + rightIndex] = rightArray[rightIndex];
      rightIndex++;
    }
  }
  while(leftIndex < leftLength) {
    arr[leftIndex + rightIndex] = leftArray[leftIndex];
    leftIndex++;
  }
  while(rightIndex < rightLength) {
    arr[leftIndex + rightIndex] = rightArray[rightIndex];
    rightIndex++;
  }
  return arr;
}
console.log(sort([5,3,8,4,2,7,1,6]))
相关推荐
Wyyyyy_m12 分钟前
2025寒假训练——天梯赛训练(1)
c++·算法
墨️穹1 小时前
DAY5, 使用read 和 write 实现链表保存到文件,以及从文件加载数据到链表中的功能
算法
sz66cm1 小时前
算法基础 -- Trie压缩树原理
算法
Java与Android技术栈1 小时前
图像编辑器 Monica 之 CV 常见算法的快速调参
算法
别NULL2 小时前
机试题——最小矩阵宽度
c++·算法·矩阵
珊瑚里的鱼2 小时前
【单链表算法实战】解锁数据结构核心谜题——环形链表
数据结构·学习·程序人生·算法·leetcode·链表·visual studio
无限码力2 小时前
[矩阵扩散]
数据结构·算法·华为od·笔试真题·华为od e卷真题
gentle_ice2 小时前
leetcode——矩阵置零(java)
java·算法·leetcode·矩阵
查理零世2 小时前
保姆级讲解 python之zip()方法实现矩阵行列转置
python·算法·矩阵
zhbi982 小时前
测量校准原理
算法