递归排序

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]))
相关推荐
北顾笙9807 分钟前
day22-数据结构力扣
数据结构·算法·leetcode
IT枫斗者8 分钟前
AI Agent 设计模式全景解析:从单体智能到分布式协作的架构演进
人工智能·redis·分布式·算法·spring·缓存·设计模式
2301_822703208 分钟前
鸿蒙flutter三方库适配——笔记与知识管理应用:Flutter Markdown实战
笔记·算法·flutter·华为·图形渲染·harmonyos·鸿蒙
人道领域13 分钟前
【LeetCode刷题日记】454:四数相加Ⅱ
算法·leetcode
她说彩礼65万14 分钟前
C语言 指针运算
c语言·数据结构·算法
skilllite作者14 分钟前
自进化 Agent 的 skills 别长成烟囱:从多入口分叉到统一发现与 spec 防火带
人工智能·算法·rust·openclaw·agentskills
kaikaile199519 分钟前
移动机器人路径跟踪的设计与仿真:模型预测控制(MPC)详解
人工智能·stm32·嵌入式硬件·算法
进击的荆棘1 小时前
递归、搜索与回溯——递归
算法·leetcode·递归
2301_822703202 小时前
鸿蒙Flutter第三方库FlutterUnit组件百科适配——具体示例还原演示1
算法·flutter·华为·harmonyos·鸿蒙
2301_764441339 小时前
LISA时空跃迁分析,地理时空分析
数据结构·python·算法