나는 선형 검색이 순진한 접근 방식이며 바이너리 검색이 더 나은 점근 적 복잡성으로 인해 성능보다 우수하다고 들었습니다. 그러나 바이너리 검색 전에 정렬이 필요할 때 선형 검색보다 나은 이유를 이해하지 못했습니다.
선형 검색은 O(n)
이진 검색입니다 O(log n)
. 그것은 이진 검색이 더 낫다는 말의 기초 인 것 같습니다. 그러나 이진 검색에는 O(n log n)
최상의 알고리즘을위한 정렬이 필요 합니다. 그래서 이진 검색은 빠른 실제로 안 로 는 정렬이 필요합니다.
저자는 순진 선형 검색 방법을 사용하는 대신 삽입 정렬에서 항목을 삽입 해야하는 위치를 찾는 데 이진 검색을 사용하는 것이 더 낫다는 CLRS를 읽고 있습니다. 이 경우 각 루프 반복마다 이진 검색을 적용 할 수있는 정렬 된 목록이 있으므로 정당화 된 것으로 보입니다. 그러나 검색이 필요한 데이터 세트가 정렬 요구 사항으로 인해 선형 검색보다 실제로 이진 검색을 사용하지 않는다는 보장이없는 일반적인 경우에는?
선형 검색보다 이진 검색을 향상시키는 실용적인 고려 사항이 있습니까? 또는 정렬에 필요한 계산 시간을 고려하지 않고 이진 검색이 선형 검색보다 나은 것으로 간주됩니까?