티스토리 뷰
reversed()의 시간복잡도가 O(1)이라니 . . .
알고리즘 문제 중 역순으로 출력하는 문제가 있었는데 저는 그럴 때마다 Array의 reversed()아니면 reverse()를 사용했습니다.
굳이 reverse도 있는데 왜 reversed를 사용하는 거야 . . 라고 생각했고 찾아보았습니다. 뭐가 달라 !!!!!!
결과적으로 시간 복잡도에서 차이가 났습니다.
모르면 일단 공식문서를 살펴봅니다.
reverse() 설명으로 그 자리(in place)에서 element를 역순으로 돌립니다.
함수는 mutating func reverse()로 정의되어 있습니다.
그 공간에서 역순으로 돌리기 때문에 뭐 새롭게 생기는 배열도 없습니다. 새로운 배열을 리턴하지 않습니다.
그리고 시간 복잡도는 O(n) .. ㅇㅋ 이건 예상했어 !
(배열에서 각각의 위치를 변경하므로 모든 element의 순서를 교환해서 시간 복잡도는 O(n)입니다.)
여기서 n은 element의 갯수 입니다.
다음으로는 reversed()를 살펴봅니다.
reversed() 설명으로 element를 역순으로 나타내는 뷰를 반환해줍니다.
함수는 func reversed() -> ReversedCollection<Array<Element>>로 정의되어 있습니다.
새로운 배열을 리턴하는 게 아니라 원래 배열을 포함하고 있는 래퍼 유형을 반환합니다.
그렇기 때문에 element를 역순으로 엑세스 할 수 있게 해줍니다.
시간 복잡도는 O(1)입니다.
하지만 reversed() 메소드 자체가 O(1) 일뿐.
이렇게 for 문을 통과하면 . . 시간 복잡도는 O(n)이 되겠네요.
여튼 reversed메소드 자체의 시간 복잡도가 O(1)이라는게 . . .
음 이 글을 작성한 목적입니다. 하하
틀린 부분이 있으면 지적해주시면 너무너무 감사하겠습니다. :-)
'Tech > Swift' 카테고리의 다른 글
isEmpty와 count == 0 비교하기 (2) | 2019.04.05 |
---|---|
스위프트 Copy-On-Write (0) | 2019.03.29 |
Swift functions sequence, stride, swap (0) | 2019.03.08 |
Swift functions abs,assert,assertionFailure (0) | 2019.03.07 |
Swift - Array shuffle() (2) | 2019.02.13 |
- Total
- Today
- Yesterday
- 책
- ios
- wwdc
- 책 후기
- 딥러닝
- swiftUI
- 알고리즘
- 문자열
- Algorithm
- Animation
- SWIFT
- objc
- Deep learning
- 머신러닝
- rxswift
- 스위프트UI
- stanford SwiftUI
- objective-c
- ARC
- 책 추천
- RX
- Xcode
- leetcode
- 독서
- 스위프트
- swift5
- ReactiveX
- string
- 애니메이션
- iOS SwiftUI
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |