Guest User

Untitled

a guest
Jun 20th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.27 KB | None | 0 0
  1. import Foundation
  2.  
  3. func sort(_ arr1: [Int], _ arr2: [Int]) -> [Int] {
  4. var c = Array<Int>()
  5. var arr1 = arr1
  6. var arr2 = arr2
  7. let c1 = arr1.count
  8. let c2 = arr2.count
  9. if c1 > c2 {
  10. for _ in 0..<c2 {
  11. if arr1[0] < arr2[0] {
  12. c.append(arr1[0])
  13. arr1.removeFirst()
  14. } else {
  15. c.append(arr2[0])
  16. arr2.removeFirst()
  17. }
  18. }
  19. for leftItem in arr1 {
  20. c.append(leftItem)
  21. }
  22. } else{
  23. for _ in 0..<c1 {
  24. if arr1[0] < arr2[0] {
  25. c.append(arr1[0])
  26. arr1.removeFirst()
  27. } else {
  28. c.append(arr2[0])
  29. arr2.removeFirst()
  30. }
  31. }
  32. for leftItem in arr2 {
  33. c.append(leftItem)
  34. }
  35. }
  36.  
  37. return c
  38. }
  39.  
  40. func mergeSort(_ arr: [Int]) -> [Int] {
  41. guard arr.count > 1 else {
  42. return arr
  43. }
  44. let middleIndex = arr.count / 2
  45. let leftArray = mergeSort(Array(arr[0..<middleIndex]))
  46. let rightArray = mergeSort(Array(arr[middleIndex..<arr.count]))
  47.  
  48. return sort(leftArray, rightArray)
  49. }
  50.  
  51. var testCase1 = [1, 2, 3, 4, 5, 6, 7]
  52. var testCase2 = [5, 6, 4, 3, 1, 0, 2]
  53.  
  54. print(mergeSort(testCase1))
  55. print(mergeSort(testCase2))
Add Comment
Please, Sign In to add comment