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)")

Result 



Comments

Popular posts from this blog

Best coding practice and structure for redux saga with react hooks | Separate watcher and worker saga | React clean code

How to use redux with React Hooks - Creating TodoList

Setting up Redux Devtools for React applications