Guest User

Untitled

a guest
Apr 21st, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.99 KB | None | 0 0
  1. // Merge two arrays
  2. function merge(arr1, arr2) {
  3. var res = []
  4. while (arr1.length > 0 && arr2.length > 0) {
  5. if (arr1[0] < arr2[0]) {
  6. res.push(arr1.shift())
  7. } else {
  8. res.push(arr2.shift())
  9. }
  10. }
  11. return [...res, ...arr1, ...arr2]
  12. }
  13.  
  14. // Recurssive Merge Sort
  15. function mergeSort1(arr) {
  16. var len = arr.length
  17. if (len < 2) return arr
  18. var mid = Math.floor(len/2)
  19. var left = arr.slice(0, mid)
  20. var right = arr.slice(mid)
  21. return merge(mergeSort1(left), mergeSort1(right))
  22. }
  23.  
  24. // Iterative Merge Sort
  25. function mergeSort2(arr) {
  26.  
  27. var result = arr.map(item => [item])
  28.  
  29. while (result.length > 1) {
  30. var temp = []
  31. var isOddNumber = (result.length % 2 !== 0)
  32. for (var i = 0; i < result.length; i += 2) {
  33. var a = result[i]
  34. var b = result[i + 1]
  35. if (isOddNumber && i === result.length - 3) {
  36. b = merge(result[i + 1], result[i + 2])
  37. i++
  38. }
  39. temp.push(merge(a,b))
  40. }
  41. result = temp
  42. }
  43. return result[0]
  44. }
  45.  
  46. console.log(mergeSort1([3,2,9,1,4,5]))
  47. console.log(mergeSort2([3,2,9,1,4,5]))
Add Comment
Please, Sign In to add comment