首页 > 网站 > WEB开发 > 正文

js归并排序法

2024-04-27 14:18:52
字体:
来源:转载
供稿:网友
js归并排序法
 1 function mergeSort(arr) { 2   var len = arr.length; 3   if(len > 1) { 4     var index = Math.floor(len / 2); 5     left = arr.slice(0,index); //得到下标从0~index-1的数组 6     right = arr.slice(index);  //得到下标从index开始到末尾的数组 7     return merge(mergeSort(left) , mergeSort(right));  里面采用递归 8   }else { 9     return arr;10   }11 }12 13 function merge(left , right) {   //该函数与快排类似,但是仔细发现,每次left或者right都是要shift掉第一个元素,表示left或者right是会变化的,最后arr.concat,因为不知道left或者right其中一个哪个剩下元素,所以要将剩下的元素给加上14   var arr = [];15   while(left.length && right.length) {16     if(left[0] < right[0]) {17       arr.push(left.shift());18     }else {19       arr.push(right.shift())20     }21   }22   return arr.concat(left , right);23 }24   


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表