๋ฐ์ํ
์๋ ํ์ธ์, ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ฆฌํ๋ ํฌ์คํ ์ ๋๋ค. ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ์ฐธ๊ณ ํ์๋ ค๋ฉด ํด๋น ์นดํ ๊ณ ๋ฆฌ๋ฅผ ์ด์ฉํด์ฃผ์ธ์. ๐
์ด๋ถ ํ์ (Binary Search)
์ด๋ถ ํ์์ ํ์ ๋ฒ์๋ฅผ ๋๊ฐ๋ก ๋๋ ์ ํ์ํ๊ธฐ ๋๋ฌธ์ ํจ์ฌ ๋น ๋ฅธ ํ์ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
์ฒ์๋ถํฐ ์ฐจ๋ก๋๋ก ํ์ : O(N)
์๊ฐ ๋ณต์ก๋ : O(log N)
๊ณผ์
0. ํ์ํ๊ธฐ ์ํ ๋ฐฐ์ด, ์ฐพ๊ณ ์ ํ๋ ๊ฐ : 9 (์ดํ Target)
1. ๋จผ์ ๋ฐฐ์ด์ ์ ๋ ฌ์ํต๋๋ค.
2. ์ธ๋ฑ์ค L, R, MID๋ฅผ ์ง์ ํด์ค๋๋ค.
3. if (Target == arr[M])
if(target == arr[M]) {
return M;
}
4. else if (Target > arr[M])
M ์ดํ์ ์๋ค์ ๋ฒ์์์ ์ ์ธํฉ๋๋ค.
5. else if (Target < arr[M])
M ์ด์์ ์๋ค์ ๋ฒ์์์ ์ ์ธํฉ๋๋ค.
6. ๋ค์ 2๋ฒ ๊ณผ์ ์ผ๋ก ๋์๊ฐ๋๋ค.
์ ์ฒด ์ฝ๋ (Code)
public int binary_Search(int[] arr, int target) {
// ์ ๋ ฌ์ด ์๋์ด์๋ค๋ฉด, ์ ๋ ฌ ๋จผ์ !
Arrays.sort(arr);
int L = 0, R = arr.length-1, M = 0;
while(L != R) {
M = (L + R) / 2;
if(target == arr[M]) return M;
else if(target > arr[M]) {
L = M + 1;
} else { // target < arr[M]
R = M - 1;
}
}
return -1;
}
๋ฐ์ํ