728x90
반응형
SMALL
알고리즘 문제를 풀 때나 코딩을 하다보면 무조건
정렬을 사용해야할 일이 생긴다.
Swift 에는 정렬을 하는 내장메소드로 sort와 sorted가 있다.
먼저 sort와 sotred의 차이에 대해서 공식문서를 통해서 알아보자.
sort()
- Sorts the collection in place.
- You can sort any mutable collection of elements that conform to the Comparable protocol by calling this method. Elements are sorted in ascending order.
- 컬렉션을 정렬한다.
Swift에서 컬렉션이란 지정된 타입의 데이터들의 묶음을 말한다. 대표적으로 배열이 있을 수 있겠다. - 이 메서드를 호출하여 비교 가능 프로토콜을 준수하는 임의의 가변 요소 컬렉션을 정렬할 수 있습니다.
요소가 오름차순으로 정렬됩니다.
sorted()
- Returns the elements of the sequence, sorted.
- You can sort any sequence of elements that conform to the Comparable protocol by calling this method. Elements are sorted in ascending order.
- 정렬된 시퀀스의 요소를 리턴한다.
- 이 메서드를 호출하여 비교 가능한 프로토콜을 준수하는 요소 시퀀스를 정렬할 수 있습니다.
요소가 오름차순으로 정렬됩니다.
가장 큰 차이점은
sort는 mutating func 으로 반환없이 내부값을 값타입의 데이터를 수정하지만
sorted는 self 의 요소를 반환한다.
정리하자면,
✔️ 오름차순 정렬을 디폴트로 한다.
✔️ soted => 반환하는 것
✔️ sort => 자기 자신이 정렬되는 것.
이제 코드로 예시를 보자
var myArray = [3, 4, 88, 99, 5, 6, 7 , 8, 10, 20, 100]
// 오름차순 정렬 : 낮은번호 -> 높은 번호
var ascendingArray = myArray.sorted() // 정렬된 요소를 return 하므로 myArray 의 값에는 영향 x
print(myArray) // [3, 4, 88, 99, 5, 6, 7, 8, 10, 20, 100]
// 정렬된 요소 반환
print(ascendingArray) // [3, 4, 5, 6, 7, 8, 10, 20, 88, 99, 100]
// myArray 자체를 정렬 -> 값 타입 복사
myArray.sort()
print(myArray) // [3, 4, 5, 6, 7, 8, 10, 20, 88, 99, 100] -> myArray 의 값이 변함
// 내림차순 정렬 : 큰순서 -> 낮은 순서
var descendingArray = myArray.sorted(by: >)
print(myArray) // [3, 4, 5, 6, 7, 8, 10, 20, 88, 99, 100] -> 아직 오름차순 정렬된 값 저장
print(descendingArray) // [100, 99, 88, 20, 10, 8, 7, 6, 5, 4, 3]
myArray.sort(by: >) // myArray 내림차순 정렬 -> 값 타입으로 정렬된 값이 새롭게 복사됨
print(myArray) // [100, 99, 88, 20, 10, 8, 7, 6, 5, 4, 3]
여기까지 sort와 sorted 였습니다! :)
728x90
반응형
LIST
'Swift' 카테고리의 다른 글
[Swift / iOS ] 디자인 패턴 (MVVM, MVP, MVI에 대한 모든 것 ) - Hyeon's iOS 개발 (0) | 2023.12.14 |
---|---|
[Swift] 고차함수 Flatmap, CompatMap, map 의 사용 (0) | 2023.11.21 |
[Swift] ClosedRange (1) | 2023.10.23 |
[Swift]iOS 17 업데이트로 인한 Apple의 URL Parsing 변경 이슈 (1) | 2023.10.06 |
[Swift] 라이노 님의 FileIO 코드 분석하기 (0) | 2023.10.03 |