두 번째 코드 kata (매번 다른 방법으로 이진 검색 알고리즘을 5 번 구현하도록 요청 함)를 수행하는 동안 다음과 같이 작동하는 약간 다른 솔루션을 생각해 냈습니다.
정렬 된 lenght 100 배열을 가지고 있고 시작 필드에 숫자 200이 있고 끝 필드에 숫자 400이있는 것을 보았습니다. 인간을 공부하는 수학으로, 필드를 검색하면 필드 35 주위에서 검색을 시작할 것입니다 일반 이진 검색 알고리즘에서와 같이 필드 50이 아닌 숫자 270.
그런 다음 배열의 필드 35에서 숫자가 270이면 35는 내가 검색 한 인덱스입니다.
그렇지 않은 경우 내가 얻은 숫자 (예 : 280)를 비교하고 배열의 하단 부분을 수행하는 작업을 반복 할 수 있습니다 (그래서 시작 필드가 200이고 종료 필드가 280을 포함하는 35 개의 필드가 있음) 내가 찾은 숫자는 내가 찾고있는 것보다, 또는 배열의 윗부분보다 큽니다 (260을 얻었습니다. 이제 65 개의 인덱스가 있습니다. 첫 번째 인덱스는 260이고 마지막 인덱스는 400입니다.) 내가 얻은 숫자가 내가 찾고있는 숫자보다 작은 경우이 하위 배열의 인덱스 4, 전체 배열의 인덱스 39입니다.
문제는이 알고리즘을 이진 검색 알고리즘으로 간주 할 수 있습니까? 그렇지 않은 경우 자체 이름이 있습니까?