# ์ด๋ถ ํ์(Binary Search)
ํ์ ๋ฒ์๋ฅผ ๋ ๋ถ๋ถ์ผ๋ก ๋ถํ ํ๋ฉด์ ์ฐพ๋ ๋ฐฉ์
์ฒ์๋ถํฐ ๋๊น์ง ๋๋ฉด์ ํ์ํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋น ๋ฅธ ์ฅ์ ์ ์ง๋
* ์๊ฐ๋ณต์ก๋
์ ์ฒด ํ์ : O(N)
์ด๋ถ ํ์ : O(logN)
# ์งํ ์์
- ์ฐ์ ์ ๋ ฌ์ ํด์ผ ํจ
- left์ right๋ก mid ๊ฐ ์ค์
- mid์ ๋ด๊ฐ ๊ตฌํ๊ณ ์ ํ๋ ๊ฐ๊ณผ ๋น๊ต
- ๊ตฌํ ๊ฐ์ด mid๋ณด๋ค ๋์ผ๋ฉด : left = mid+1 ๊ตฌํ ๊ฐ์ด mid๋ณด๋ค ๋ฎ์ผ๋ฉด : right = mid - 1
- left > right๊ฐ ๋ ๋๊น์ง ๊ณ์ ๋ฐ๋ณตํ๊ธฐ
# ์์ค ์ฝ๋
public static int solution(int[] arr, int M) { // arr ๋ฐฐ์ด์์ M์ ์ฐพ์
Arrays.sort(arr); // ์ ๋ ฌ
int start = 0;
int end = arr.length - 1;
int mid = 0;
while (start <= end) {
mid = (start + end) / 2;
if (M == arr[mid]) {
return mid;
}else if (arr[mid] < M) {
start = mid + 1;
}else if (M < arr[mid]) {
end = mid - 1;
}
}
throw new NoSuchElementException("ํ๊ฒ ์กด์ฌํ์ง ์์");
}