상세 컨텐츠

본문 제목

[Swift] sort ()와 sorted()의 차이점은 무엇일까?

Swift

by Mr.Garlic 2022. 5. 9. 23:01

본문

Swift 에서 sort()와 sorted()의 차이점

안녕하세요 이웃님들 ~~~ 

오늘은 알고리즘 공부를 하다가 생각난 주제를 가지고 와 봤어요~~!!

바로 swift에서의 sort() 와 sorted()의 차이점을 알아보려고 하는데요. 

 

Sort() 예시

먼저 애플 개발자 문서에서 정의를 살펴보면서 시작을 해 보겠습니다. 

Apple Developer Documentation 내의 sort()의 정의

Array 객체에 대해서 사용되는 메서드 sort()는 

Sorts the collection in place. 

즉 Array 자체를 정렬된 상태로 바꿔버리는 메서드예요. 보다시피 return이 따로 없는 메서드입니다.

 

이렇게 example이라는 함수가 있다면, 이 함수가 실행된 후에 array 를 print 해보면

["1", "2", "3", "6", "9"] 이렇게 정렬이 될 거예요. 

array 원본 자체를 mutating 즉 변형 시켜버리는 것 입니다. 

 

Sorted() 예시

위에서 쓴 array를 그대로 사용합니다. sort()와 똑같이 사용하게 되면 어떻게 될까요?? 

잉? result를 왜 사용하지 않았냐고 컴파일러가 경고등을 켜줍니다.

즉 리턴된 값이 무언가 있다는 거지요! 

 

아래와 같이 간단 정의를 보면 Element들이 담긴 배열을 리턴해주고 있습니다. 

 

따라서 array.sorted() 는 어떤 배열을 주는 것인데, 원본(array)를 변형시킨 복제를 새로운 배열로 주는 것입니다. 

따라서 array 원본은 변하지 않고 새로 만들어진 배열을 할당한 sortedArray라는 배열은 완전히 다른 배열이 되는 것입니다. 

print를 하게 되면

array 는 여전히 [ "3", "2", "1", "6", "9"] 이고 

sortedArray는 array와 상관없는 별개의 배열이 되어서

["1", "2", "3", "6", "9"] 일 것입니다. 

 

이제 sort와 sorted의 차이가 이해 되셨나요?! ㅎㅎ

혹시 잘못된 점이 있거나 궁금한 점이 있으시면 언제든 댓글을 남겨주세요! 감사합니다 :)

관련글 더보기