ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

归并排序(JS)

2021-11-29 14:03:13  阅读:101  来源: 互联网

标签:sort tmp 归并 function arr JS let var 排序


 

// 为了方便一些调试场景,具体的外层函数表达式使用的是var声明语句

var merge_sort = function(arr) {
  sort(arr, 0, arr.length - 1);
};

var sort = function(a, l, r) {
  // 终止排序过程
  if (l >= r) return;
  // 递归拆分(1分2)
  const m = ((r - l) >> 1) + l;
  sort(a, l, m);
  sort(a, m + 1, r);
  // 合并子数组(2合1)
  if (a[m] > a[m + 1]) merge(a, l, m, r);
};

var merge = function(a, l, m, r) {
  const tmp = a.slice(l, r + 1);
  let i = l;
  let j = m + 1;
  for (let k = l; k <= r; k++) {
    if (i > m) {
      a[k] = tmp[j - l];
      j++;
    } else if (j > r) {
      a[k] = tmp[i - l]; 
      i++;
    } else if (tmp[i - l] <= tmp[j - l]){
      a[k] = tmp[i - l]; 
      i++;
    } else{
      a[k] = tmp[j - l];
      j++;
    }
  }
};

// -- 完善中

标签:sort,tmp,归并,function,arr,JS,let,var,排序
来源: https://www.cnblogs.com/fanqshun/p/15619073.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有