Skip to content

Quick Sort

Abo3aTef edited this page Dec 6, 2016 · 3 revisions

Quick Sort

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.

Implantation

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) 

Time Complexity

  • Best Case : O( n log n )
  • Average Case : O( n log n )
  • Worst Case : O(n ^ 2)
Clone this wiki locally