Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function mergeSort(list) {
- const merge = (list,start,middle,end)=>{
- const leftList = list.slice(start,middle+1);
- const rightList = list.slice(middle+1,end+1);
- let leftP = 0;
- let rightP = 0;
- let tempList = [];
- //对比2个数组
- //谁小谁先进空数组 (从小到大排序)
- //如果有一个数组的数据提前没有的话,就直接把剩下的数据添加到temp数组内
- while(leftP < leftList.length && rightP < rightList.length){
- if(leftList[leftP] < rightList[rightP]){
- tempList.push(leftList[leftP]);
- leftP++;
- }else{
- tempList.push(rightList[rightP]);
- rightP++;
- }
- }
- if(leftP < leftList.length){
- tempList.push(...leftList.slice(leftP));
- }else{
- tempList.push(...rightList.slice(rightP));
- }
- //r为移动数据的范围
- //开始节点就是 start + i
- //将 temp 的值 赋值给list
- const r = end - start;
- for(let i=0; i<=r; i++){
- list[start + i] = tempList[i];
- }
- }
- const merge_sort = (list, start, end) => {
- if(start >= end) return ;
- const middle = Math.floor((start + end) / 2);
- merge_sort(list,start,middle);
- merge_sort(list,middle+1,end);
- merge(list,start,middle,end);
- }
- merge_sort(list,0,list.length-1);
- }
- var list = [2,3,1,123,213,12,4,23,5,1,5,1,423,14,3,15,34,523,14,24];
- mergeSort(list)
- console.log(list);
Add Comment
Please, Sign In to add comment