[swift] 고차 함수를 사용하여 배열 내에서 특정 값을 기준으로 정렬하는 방법은 어떻게 되나요?

Swift에서 배열을 정렬하는 가장 간단한 방법은 sorted(by:) 메서드를 사용하는 것입니다. 이 메서드는 배열의 각 요소를 비교하여 새로운 정렬된 배열을 반환합니다. 기본적으로 sorted(by:)는 요소들을 오름차순으로 정렬하지만, 우리는 특정 값을 기준으로 정렬하고 싶으므로 비교 클로저를 사용해야 합니다.

다음은 특정 값을 기준으로 정렬하는 예제 코드입니다.

let array = [10, 5, 8, 3, 2, 1]

let sortedArray = array.sorted { $0 < $1 }
print(sortedArray) // [1, 2, 3, 5, 8, 10]

위의 예제에서는 배열의 각 요소들을 기본적으로 오름차순으로 비교하고 있습니다. 만약 내림차순으로 정렬하고 싶다면 비교 클로저를 다음과 같이 변경하면 됩니다.

let reversedArray = array.sorted { $0 > $1 }
print(reversedArray) // [10, 8, 5, 3, 2, 1]

위의 코드에서 $0$1은 배열의 요소들을 나타내며, 비교 연산자를 사용하여 정렬 순서를 결정합니다.

sorted(by:) 메서드는 기본적으로 원본 배열을 변경하지 않고 새로운 배열을 반환합니다. 원본 배열을 정렬하고 싶다면 sort(by:) 메서드를 사용하면 됩니다.

상기 예제는 Int형 배열을 정렬하는 예제입니다. 다른 자료형을 사용하는 경우 비교 연산자의 동작이 달라질 수 있으므로 주의해야 합니다.