递归排序

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]))
相关推荐
2401_8414956418 分钟前
【语音识别】混合高斯模型
人工智能·python·算法·机器学习·语音识别·gmm·混合高斯模型
码上零乱23 分钟前
跟着小码学算法Day19:路径总和
java·数据结构·算法
天选之女wow2 小时前
【代码随想录算法训练营——Day53】图论——110.字符串接龙、105.有向图的完全可达性、106.岛屿的周长
算法·深度优先·图论
安迪西嵌入式2 小时前
数据平滑处理算法03——中心移动平均
java·前端·算法
CN-Dust2 小时前
【C++】2025CSP-J第二轮真题及解析
开发语言·c++·算法
贝塔实验室2 小时前
译码器的结构
驱动开发·算法·网络安全·fpga开发·硬件工程·信息与通信·信号处理
夏鹏今天学习了吗3 小时前
【LeetCode热题100(57/100)】括号生成
算法·leetcode·职场和发展
三花聚顶<>3 小时前
310.力扣LeetCode_ 最小高度树_直径法_DFS
算法·leetcode·深度优先
mit6.8243 小时前
[VT-Refine] 仿真平台 | Isaac Gym引擎 | easysim-envs配置
算法
温柔一只鬼.3 小时前
Java数组
java·开发语言·算法