递归排序

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]))
相关推荐
To_OC7 小时前
LC 131 分割回文串:刚学回溯时,我连怎么切字符串都想不明白
javascript·算法·leetcode
旖-旎8 小时前
LeetCode 518:零钱兑换||(完全背包)—— 题解
c++·算法·leetcode·动态规划·背包问题
To_OC9 小时前
LC 42 接雨水:暴力超时卡半天?前后缀数组一用就通了
javascript·算法·leetcode
delishcomcn9 小时前
AI视觉识别+分切算法:电化铝缺陷检测与裁切一体化解锁
人工智能·算法
触底反弹10 小时前
深入理解大模型采样:Temperature、Top-K、Top-P 的原理与实战
人工智能·算法·面试
雪碧聊技术10 小时前
力扣 LCR 091. 粉刷房子 —— 动态规划入门详解
算法·动态规划
CV-Climber13 小时前
检索技术的实际应用
人工智能·算法
hhzz13 小时前
Tiger AI Platform平台中增加人脸识别功能
图像处理·人工智能·算法·计算机视觉·大模型
从零开始的代码生活_14 小时前
C++ 继承详解:访问控制、对象模型、菱形继承与设计取舍
开发语言·c++·后端·学习·算法