Merge Sort using Swift - iOS Coding Challenge
Complexity : O(n log n)
Let's Code :
//: A UIKit based Playground for presenting user interface
import UIKit
import Foundation
var sortThisArray : [Int] = [11,2,43,12,45,2,42,66,70,21,23,48,88,65,99,21]
func merge(left:[Int],right:[Int]) -> [Int] {
var mergedArr : [Int] = []
var left = left
var right = right
while left.count > 0 && right.count > 0 {
if left.first! < right.first! {
mergedArr.append(left.removeFirst())
}
else{
mergedArr.append(right.removeFirst())
}
}
return mergedArr + left + right
}
func mergeSort(array: [Int]) -> [Int]{
var array = array
guard array.count > 1 else {
return array
}
let leftArr = Array(array[0..<array.count/2])
let rightArr = Array(array[array.count/2..<array.count])
return merge(left: mergeSort(array: leftArr), right: mergeSort(array: rightArr))
}
print("Initial Array Input : \(sortThisArray)")
sortThisArray = mergeSort(array: sortThisArray)
print("Array After Sorting : \(sortThisArray)")

Comments
Post a Comment