Quick actions

cmd+k|ctrl+k

Navigation

Languages

Merge Sort

Snippet info

Language

JavaScript

Visibility

public

Author

christian.lohr

Created

2016-05-07T17:06:17Z

Updated

2016-05-07T17:07:25Z

'use strict';

const merge = (left, right) => {
    const result = [];
    let il = 0;
    let ir = 0;
    while (il < left.length && ir < right.length) {
        if (left[il] < right[ir]) {
            result.push(left[il++]);
        } else {
            result.push(right[ir++]);
        }
    }
    return result.concat(left.slice(il)).concat(right.slice(ir));
}

const mergeSort = (arr) => {
    if (arr.length < 2) {
        return arr;
    }
    const middle = parseInt(arr.length / 2) | 0;
    const left   = arr.slice(0, middle);
    const right  = arr.slice(middle);
    return merge(mergeSort(left), mergeSort(right));
}

const arr = [45, -8, 15, 3, 0, -1, 22];
const sortedArr = mergeSort(arr, 0, arr.length-1);

console.log('sortedArr', sortedArr);
INFO