- 
                Notifications
    
You must be signed in to change notification settings  - Fork 0
 
Quick Sort
        Abo3aTef edited this page Dec 6, 2016 
        ·
        3 revisions
      
    Quick Sort have Five ways to be implemented. We will preview them individually. We'll start with the most Popular one which is Lomuto's partitioning algorithm. For more Details look at here. Also This Video Demonstrates Lomuto's partitioning algorithm in a good way.
func partition(inout list : [Int], low: Int, high : Int) -> Int {
    let pivot = list[high]
    var j = low
    var i = j - 1
    while j < high {
        if list[j] <= pivot{
            i += 1
            (list[i], list[j]) = (list[j], list[i])
        }
        j += 1
    }
    (list[i+1], list[high]) = (list[high], list[i+1])
    return i+1
}
 func quikcSort(inout list : [Int] , low : Int , high : Int) {
    
    if low < high {
        let pIndex = partition(&list, low: low, high: high)
        quikcSort(&list, low: low, high: pIndex-1)
        quikcSort(&list, low: pIndex + 1, high: high)
    }
}
 var list = [7,3,15,10,0,8,2,4]
quikcSort(&list, low: 0, high: list.count-1)
var list2 = [ 10, 0, 3, 9, 2, 14, 26, 27, 1, 5, 8, -1, 8 ]
quikcSort(&list2, low: 0, high: list2.count-1)
var list3 = [1,3,9,8,2,7,5]
quikcSort(&list3, low: 0, high: list3.count-1) - Best Case : O( n log n )
 - Average Case : O( n log n )
 - Worst Case : O(n ^ 2)