Algorithm/Data structure

Swift - quick sort

Teol 2023. 11. 4. 17:42

- 퀵 정렬

 

퀵 정렬은 흔히 피봇(pivot)이라고 불리는 임의의 기준값을 사용

 

func quicksort(_ arr: [Int]) -> [Int] {
    // 기본단계: 원소의 개수가 0이나 1이면 정렬된 상태
    if arr.count < 2 {
        return arr
    }

    // 재귀단계:
    // less 기준 원소보다 작거나 같은 원소로 이루어진 하위배열
    // greater 기준 원소보다 큰 원소로 이루어진 하위배열
    let pivot = arr[0]
    var less = [Int]()
    var greater = [Int]()
    for i in arr[1...] {
        if i <= pivot {
            less.append(i)
        } else {
            greater.append(i)
        }
    }

    return quicksort(less) + [pivot] + quicksort(greater)
}

print( quicksort([10,5,2,3]) ) // -> [2,3,5,10]
print( quicksort([6,5,1,4,7,2,3]) ) // -> [1,2,3,4,5,6,7]

 

 

 

 

 

 

 

'Algorithm > Data structure' 카테고리의 다른 글

Swift - Queue구현  (0) 2023.12.04
Swift - selection sort  (1) 2023.11.04
Swift - bubble sort  (0) 2023.11.03