11
Phobos에 나만의 이진 검색 기능이 있습니까? 내 자신의 비교 함수를 검색하려면 미리 정렬 된 배열이 있지만 std.algorithms 또는 std.containers 찾을 수 없습니다.D 2.0 (Phobos)의 바이너리 검색?
감사합니다. std.range
에서
Phobos에 나만의 이진 검색 기능이 있습니까? 내 자신의 비교 함수를 검색하려면 미리 정렬 된 배열이 있지만 std.algorithms 또는 std.containers 찾을 수 없습니다.D 2.0 (Phobos)의 바이너리 검색?
감사합니다. std.range
에서
사용 SortedRange
:
Cribbed http://www.digitalmars.com/d/2.0/phobos/std_range.html#SortedRange에서 :
auto a = [ 1, 2, 3, 42, 52, 64 ];
auto r = assumeSorted(a);
assert(r.canFind(3));
assert(!r.canFind(32));
아, 당신은 기대하지 않았다 ... "assumeSorted"를 사용해야합니다, 그 감사합니다! :) – Mehrdad
'find()'(따라서'canFind()') 실제로 주어진 타입 입력에 기반한 다른 알고리즘을 사용하면 꽤 똑똑합니다. 바이너리 검색이 작동하려면, 데이터를 정렬해야하므로'assumeSorted()'는'find()'와'canFind()'가 똑똑해서 바이너리 검색이 그때 최고의 검색, 그리고 그것이 그들이하는 일입니다. –
단순히 이진 검색을 시도하는 경우 전혀 직관적이지 않습니다. – Trass3r