2016-06-19 4 views
1

배열의 요소를 검색 할 때 .contains() 메서드를 사용할 수 있습니다. 내가 알고 싶은 것은 그것이 작동하는 방법입니다. 바이너리 검색 또는 순차 검색 또는 완전히 다른 작업을 수행합니까?신속한 .contains (element : _) 메소드는 어떻게 작동합니까?

+4

구현 세부 사항으로 간주되어야하지만 임의의 (정렬 된 것은 아님) 배열에서 작동하므로 이진 검색을 사용할 수 없습니다. 정말 궁금하신 분은 Swift 소스 코드에서 찾으십시오! –

답변

0

contains(_:) 방법은 Sequence에 정의되어있다 (프로토콜 확장에 의해 제공됨). Sequence은 내용의 안정성에 대한 가정을하지 않으며 임의 액세스를 제공하지 않으므로 캔트은 선형 검색 이상을 수행합니다. Collection은 무작위 액세스를 제공하므로 최소한 바이너리 검색을 구현할 수는 있지만 내용을 정렬해야한다는 보장이 필요합니다.

proposal for adding binary search to the Swift Standard Library이 있다는 것은 이미 이진 검색 방법이 없다는 또 다른 좋은 징후입니다.

그러나 Array (내용이 정렬 됨)을 NSArray으로 캐스팅하고 this method을 사용하여 이진 검색을 수행 할 수 있습니다.

관련 문제