๐ ์ด๋ถ ํ์
- ์๋ฃ์ ๊ฐ์ด๋ฐ์ ์๋ ํญ๋ชฉ์ ํค ๊ฐ๊ณผ ๋น๊ตํ์ฌ ๋ค์ ๊ฒ์์ ์์น๋ฅผ ๊ฒฐ์ ํ๊ณ ๊ฒ์์ ๊ณ์ ์งํํ๋ ๋ฐฉ๋ฒ
- ์ด๋ถ ํ์ ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ ฌ๋์ด ์๋ ๋ฆฌ์คํธ์์ ํ์ ๋ฒ์๋ฅผ ์ ๋ฐ์ฉ ์ขํ๊ฐ๋ฉฐ ๋ฐ์ดํฐ๋ฅผ ํ์ํ๋ ๋ฐฉ๋ฒ
- ์ด์ง ํ์์ ๋ฐฐ์ด ๋ด๋ถ์ ๋ฐ์ดํฐ๊ฐ
์ ๋ ฌ
๋์ด ์์ด์ผ๋ง ์ฌ์ฉํ ์ ์๋ ์๊ณ ๋ฆฌ์ฆ
- ๋ณ์ 3๊ฐ(
start
, end
, mid
)๋ฅผ ์ฌ์ฉํ์ฌ ํ์ํ๋ค. ์ฐพ์ผ๋ ค๋ ๋ฐ์ดํฐ์ ์ค๊ฐ์ ์์น์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ๋น๊ตํด์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ๊ฒ์ด ์ด์ง ํ์์ ๊ณผ์
- ์๊ฐ ๋ณต์ก๋ : O(log N)
๐ฌ ํ์ ๊ณผ์
1. ์๋ฃ์ ์ค์ ์์ ๊ณ ๋ฆ
2. ์ค์ ์์ ๊ฐ๊ณผ ์ฐพ๊ณ ์ํ๋ ๋ชฉํ ๊ฐ ๋น๊ต
3. ๋ชฉํ ๊ฐ์ด ์ค์ ๊ฐ๋ณด๋ค ์์ผ๋ฉด ์ผ์ชฝ ๊ตฌ๊ฐ ํ์ ์ํ, ํฌ๋ฉด ์ค๋ฅธ์ชฝ ๊ตฌ๊ฐ ํ์ ์ํ
4. ์ํ๋ ๋ต์ ์ฐพ์ ๋๊น์ง ๋ฐ๋ณต
๐ฌ ์๊ณ ๋ฆฌ์ฆ ๊ตฌํ
- ์๋ฃ์ ์์์ ๊ณผ ์ข
๋ฃ์ ์ ์ด์ฉํด์ ๊ฒ์
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
binarySearch(arr, 2);
}
static int binarySearch(int[] arr, int target) {
int start = 0, end = arr.length-1;
int mid;
int result = 0;
while(start <= end) {
mid = (start + end) / 2;
if(arr[mid] < target) start = mid+1;
else if(arr[mid] > target) end = mid-1;
else {
result = mid;
break;
}
}
return result;
}