0. let sorted = merge_sort(array);
1. function merge_sort(array)
2. {
3. let n = array.length;
4. if (n == 1)
5. {
6. return array;
7. }
8. let left = array.slice(0, parseInt(n / 2));
9. let right = array.slice(parseInt(n / 2), n);
10. left = merge_sort(left);
11. right = merge_sort(right);
12. return(merge(left, right));
13. }
14. function merge(left, right)
15. {
16. let sorted = [];
17. let i = 0, j = 0;
18. while(i < left.length && j < right.length)
19. {
20. if(left[i] > right[j])
21. {
22. sorted.push(right[j]);
23. j += 1
24. }
25. else if(left[i] < right[j])
26. {
27. sorted.push(left[i]);
28. i += 1;
29. }
30. else
31. {
32. sorted.push(left[i]);
33. sorted.push(right[j]);
34. i += 1; j += 1;
35. }
36. }
37. while(i < left.length)
38. {
39. sorted.push(left[i]);
40. i += 1;
41. }
42. while(j < right.length)
43. {
44. sorted.push(right[j]);
45. j += 1;
46. }
47. return sorted;
48. }