归并排序
2019-06-03 本文已影响0人
八菜冰
let mergeSort = (arr,left,right) => {
if(left < right) {
let mid = parseInt((left+right)/2);
mergeSort(arr,left,mid);
mergeSort(arr,mid+1,right);
merge(arr,left,mid,right);
}
}
let merge = (arr,left,mid,right) => {
let res = [];
let i = left, j=mid+1;
let index = 0;
while(i<=mid&&j<=right){
res[index++] = arr[i]>arr[j] ? arr[j++] : arr[i++];
}
while(i <= mid) res[index++] = arr[i++];
while(j <= right) res[index++] = arr[j++];
for(let k=0;k<index;k++){
arr[left+k] = res[k];
}
}