首页 > 编程语言 > 详细

归并排序

时间:2019-07-04 13:48:45      阅读:122      评论:0      收藏:0      [点我收藏+]

function mergeSort(items){
  if (items.length == 1) {
  return items;
  }
  var work = [];
  for (var i=0, len=items.length; i < len; i++){
  work.push([items[i]]);
  }
  work.push([]); //in case of odd number of items
  for (var lim=len; lim > 1; lim = (lim+1)/2){
  for (var j=0,k=0; k < lim; j++, k+=2){
  work[j] = merge(work[k], work[k+1]);
  }
  work[j] = []; //in case of odd number of items
  }
  return work[0];
}

function merge(left, right){
  var result = [];
  while (left.length > 0 && right.length > 0){
  if (left[0] < right[0]){
  result.push(left.shift());
  } else {
  result.push(right.shift());
  }
}
  return result.concat(left).concat(right);
}

没用递归不存在栈溢出问题

归并排序

原文:https://www.cnblogs.com/CoderZX/p/11131625.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!