dev._.note

[Swift] reverse() 와 reversed()의 차이점 본문

Dev/SWIFT

[Swift] reverse() 와 reversed()의 차이점

Laena 2023. 10. 25. 19:09

👏 reverse() 와 reversed()의 차이

Array를 사용하다보면 배열을 반대로 뒤집기 위해서 위 메서드들을 사용하는 경우가 있는데 차이점을 알기 어려워서

공식문서로 해당 메소드를 찾아보니 시간복잡도(Complexity)가 다른 것을 발견했다.

 


reverse 의 경우 아래와 같이 O(n)의 시간복잡도가 발생하는 것을 알 수 있다. mutating func 이다보니 배열에서 각각의 위치들을 변경하는 동작을 수행하기에 시간복잡도(Complexity)가 O(n)이 되는 것으로 보인다.

https://developer.apple.com/documentation/swift/array/reverse()

 

reverse() | Apple Developer Documentation

Reverses the elements of the collection in place.

developer.apple.com

 


reverse 와 다르게 reversed 메소드의 경우는 시간복잡도가 O(1)에 불과하다. non-mutating func 이다보니 선회하면서 모든 element들의 위치를 변경시켜주는 동작을 하는 것이기 때문이다.

 

https://developer.apple.com/documentation/swift/int/words-swift.struct/reversed()

 

reversed() | Apple Developer Documentation

Returns a view presenting the elements of the collection in reverse order.

developer.apple.com

 

'Dev > SWIFT' 카테고리의 다른 글

[Swift] enumerated() 배열의 인덱스 가져오기  (0) 2023.10.26
[Swift] zip 함수  (0) 2023.10.26
[Swift] Int형 정수  (0) 2023.10.25
[Swift] Array(배열) 기초문법  (0) 2023.10.25
[Swift] 고차함수(Higher-order Function)  (0) 2023.10.24