Comparator 인스턴스를 구현할 때 compare 메소드를 적잖아요

코드 보니깐 앞에게 뒤에것보다 크면 1, 작으면 -1, 같으면 0 으로 반환하도록 설정해놨던데

main 메소드 안에 static <T> int binarySearch( T[] a, T key, Comparator<? super T> c ) 인, binarySearch메소드가 compare 메소드를 호출하면서 자동으로 정렬이 되는 건가요?

이해가 안되네요;;

compare 메소드가 양수 음수 0을 반환하면서 무슨 원리로 돌아가는지 궁금합니다..

- dc official App