[오늘의 Swift 지식] 정렬 sort()와 sorted()
📌 Swift

[오늘의 Swift 지식] 정렬 sort()와 sorted()

오늘은 sort()와 sorted()를 정리해보도록 하겠습니다.
많이 다르지 않아 오히려 더 햇갈릴 수 있어서 정리하게 되었네요

 

sort() 함수

sort는 기본적으로 '원본 배열'을 가지고 오름차순으로 정렬을 해줍니다.

 

물론 내림차순으로도 정렬이 가능합니다. 만약, 내림차순으로 정렬을 하고 싶다면, sort(by: )를 사용해서
sort(by: >)와 같이 작성해 주시면 됩니다.

 

sort(by: )를 사용해서 오름차순으로 정렬하는 방법도 있습니다. 바로 sort(by: <)입니다. 기존에서 ">" 방향만 바꿔주면 됩니다.

 

하지만, sort 함수의 default값이 오름차순이기 때문에, sort(by: <)를 사용해서 오름차순으로 정렬할 필요성은 없을 거 같네요. 😅

 

아래 예시 코드를 보면서 이해해봅시다.

var arr = [2, 24, 45, 36, 9]

// 기본 오름차순 정렬
arr.sort()

print(arr) // [2, 9, 24, 36, 45]


// 내림차순 정렬
arr.sort(by: >)

print(arr) // [45, 36, 24, 9, 2]

 

sorted() 함수

sorted는 sort와 다르게 원본 배열은 건드리지 않고, '사본'을 만들어서 오름차순으로 정렬한 후 정렬된 요소를 반환해주는 방식입니다.

 

내림차순으로 정렬하고 싶다면, sort함수와 동일한 방법으로 sorted(by: ) 함수를 사용해서 sorted(by: >) 로 작성해주시면 됩니다. 

 

예상하셨을 거 같은데, sort와 동일하게 sorted만 작성해주면 오름차순으로 정렬되기 때문에, sorted(by: <)를 사용해서 오름차순으로 정렬할 필요성은 없을 거 같습니다. 😋

 

이번에도 예시 코드를 보면서 좀 더 이해해봅시다.

var arr = [2, 24, 45, 36, 9]

// 기본 오름차순 정렬
var sortedArr = arr.sorted()

print(arr) // [2, 24, 45, 36, 9]
print(sortedArr) // [2, 9, 24, 36, 45]


// 내림차순 정렬
var sortedArrDown = arr.sorted(by: >)

print(sortedArrDown) // [45, 36, 24, 9, 2]

 

sort & sorted 차이, 주의할 점

 

sort는 '원본 배열' 자체의 순서를 변경한다고 했습니다.

 

그렇다면, 기존의 배열 순서가 중요한 경우에 sort를 사용한다면 어떻게 될까요? 🤔

 

네 당연히 문제가 생길 겁니다. 원본 배열의 순서가 중요한 상황인데, sort를 사용해서 원본 배열의 순서가 바뀌었으니 문제가 생길 겁니다.

 

그러니 기존의 배열 순서가 중요한 경우에는 sort를 사용하지 않는 것이 좋을 것 같네요 :)

 

또한, sorted는 원본 배열의 '사본'을 만들어서 사용한다고 했습니다.

 

값을 복제하여 사용하는 만큼 메모리의 사용량은 2배가 되겠죠? 거기다가 또 sorted를 사용하면 그만큼 메모리가 더 늘어날 겁니다.

 

그러니 큰 사이즈의 배열에 사용하면 그만큼 메모리가 많이 사용되므로 주의해야 하겠네요.

 

Other types

위의 예시 코드에서는 전부 정수(Int)를 예시로 들었지만, 정수에만 적용되는 것이 아니라 Double, String 등의 타입에서도 적용이 됩니다.

 

간단하게 하나만 예시를 들자면 String형에서는 한글은 '가나다'순서 영어는 'abc'순서로 정렬이 되겠네요 :)

 

마지막 예시 코드입니다.

var arr = ["B", "A", "C", "D"]
arr.sort()

print(arr) // ["A", "B", "C", "D"]


var arred = ["나", "가", "다", "라"]

var sortedArr = arred.sorted()
print(sortedArr) // ["가", "나", "다", "라"]

 

 

 

sort, sorted에 대한 건 여기까지 입니다.
공부한 내용을 정리하면서 쓴 글이기 때문에, 부족한 부분이 있을 수 있습니다.
그래도 읽으신 분들께 조금이나마 도움이 되면 좋겠네요 :)
오타나 틀린 내용이 있으면 지적해주시면 감사하겠습니다!