๐ ์ด์งํ์
๐ซ ์ ์
์ด์งํ์ Binary-Search
์ ๋ ฌ๋ ๋ฆฌ์คํธ์ ๋ํด, ํน์ ์์์ ์์น๋ฅผ ์ฐพ์๋ด๋ ์๊ณ ๋ฆฌ๋ฌ
๐ซ ์ Why
๐ซง ํ์ ๋ฌธ์
- ์ ํ๋ฒํธ๋ถ์์ ์ด๋ฆ์ด K๋ก ์์ํ๋ ์ฌ๋์ ๋ฒํธ ์ฐพ๊ธฐ
- ์ฒซ ํ์ด์ง๋ถํฐ ํ ์ฅ์ฉ ์ฐจ๋ก๋๋ก ๋๊ธฐ๋ฉด์ ์ฐพ๋ ๋ฐฉ๋ฒ
- ์ฑ
ํ๊ฐ์ด๋ฐ๋ฅผ ํผ์น๊ณ ์ฐพ๊ธฐ ์์ํ๋ ๋ฐฉ๋ฒ
- ์ํ๋ฒณ ์์๋๋ก๋ผ๋ฉด ์ค๊ฐ์ฏค์ K๋ก ์์ํ๋ ์ด๋ฆ์ด ์์ ํ ๋๊น
- ์ฌ์ ์์ ๋จ์ด ์ฐพ๊ธฐ
- ํ์ด์ค๋ถ์ ๋ก๊ทธ์ธํ๊ธฐ (ํ์ด์ค๋ถ์ด ๋ด ๊ณ์ ์ด ์ค์กดํ๋ ๊ณ์ ์ธ์ง ํ์ธํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์์ด๋ ์ฐพ๊ธฐ)
๐ซง vs ๋จ์ ํ์ Single-Search
๋จ์ ํ์ Single-Search, ์์๋๋ก ํ์
ํ ๋ฒ ์ถ์ธกํ ๋๋ง๋ค ์ถ์ธกํ ์ซ์ ํ๋๊ฐ ๋ต์ด ์๋๋ผ๋ ๊ฒ์ ์๊ฒ ๋ ๋ฟ
1~100 ์ซ์์ ๋ํด, ๋ง์ฝ ๋ต์ด 99์ด๋ผ๋ฉด ๋ต์ ๋๋ฌํ๊ธฐ ๊น์ง 99๋ฒ ์ถ์ธกํด์ผ ํ๋ค
๋ ์ข์ ๋ฐฉ๋ฒ
100์ ์ค๊ฐ 50๋ถํฐ ์์ํ๋ ๊ฒ
50์ด ๋๋ฌด ์๋ค ๋ ๋๋ต ํ๋๋ก ์ซ์์ ์ ๋ฐ์ด ๋ต์ด ์๋๋ผ๋ ๊ฒ์ ์ ์ ์๋ค
๋จ์ 51~100 ๊น์ง์ ์ซ์ ์ค ์ค๊ฐ์ ์ํ๋ 75๋ก ์ถ์ธก
75๊ฐ ๋๋ฌด ํฌ๋ค๋ ๊ฒ์ ์์์ผ๋ฏ๋ก ์์์์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด ์ซ์๋ณด๋ค ๊ฐ๊ฑฐ๋ ํฐ ์ซ์๋ค์ ์ ์ธํ ์ ์๋ค
์ด์ง ํ์์์๋ ๋งค๋ฒ ๋จ์ ์ซ์ ์ค์ ๊ฐ์ด๋ฐ ์ซ์๋ฅผ ๋งํ๊ณ ๋๋ต์ ๋ฐ๋ผ ๊ทธ๋ณด๋ค ํฐ ์ซ์ ํน์ ์์ ์ซ์๋ค์ ํ๊บผ๋ฒ์ ์์จ ์ ์์ต๋๋ค.
100๊ฐ์ ์ซ์ ์ต๋ 7๋ฒ ๋ง์ ์ ๋ต์ ๋ง์ถ ์ ์๋ค
240,000๊ฐ ๋จ์ด ์ต๋ 18๋จ๊ณ ์์ ์ฐพ์ ์ ์๋ค
๋จ์ ํ์์ผ๋ก๋ 240,000๋ฒ
n๊ฐ์ ์์๋ฅผ ๊ฐ์ง ๋ฆฌ์คํธ์์ ์ด์ง ํ์์ผ๋ก ์ฌ์ฉํ๋ฉด ์ต๋ log2n๋ฒ ๋ง์ ๋ต์ ์ฐพ์ ์ ์๋ค.
๋จ์ ํ์์ด๋ฉด ์ต๋ n๋ฒ์ด ํ์ํ ์๋ ์๋ค.
๋ฆฌ์คํธ์ ์ซ์ 8๊ฐ ์๋ค๋ฉด ์ต์
์ ๊ฒฝ์ฐ 8๊ฐ์ ์ซ์๋ฅผ ๋ชจ๋ ํ์ธํด๋ด์ผ ํ๋ค๋ ๋ง
์ด์ง ํ์์ ์ฌ์ฉํ๋ฉด ์ต์ ์ ๊ฒฝ์ฐ์๋ log n๊ฐ์ ์ซ์๋ง ํ์ธํ๋ฉด ๋ฉ๋๋ค. ๋ฆฌ์คํธ์ ์ซ์๊ฐ 8๊ฐ ์๋ค๋ฉด 23 = 8, ์ฆ log 8 = 3 ์ด๋ฏ๋ก 3๋ฒ๋ง ํ์ธํด๋ ๋ฉ๋๋ค. ์์๊ฐ 1,024๊ฐ์ด๋ฉด 210 = 1,024, ์ฆ log 1,024 = 10 ์ด๋ฏ๋ก ์ซ์ 10๊ฐ๋ง ํ์ธํด๋ ์ถฉ๋ถํฉ๋๋ค.
๐ซ ๊ตฌํ
์ฒ์์๋ ๋ชจ๋ ๋ฒ์๋ฅผ ํ์
์ดํ (low + high) / 2, ์ ๋ฐ์ฉ ๋ฒ์๋ฅผ ์ค์ฌ ๋๊ฐ๋
(๋ฌธ์ , low + high๊ฐ ์ง์๋ฉด ๊ด์ฐฎ์๋ฐ, ํ์์ผ ๊ฒฝ์ฐ์๋? ๊ฒฐ๊ณผ ๊ฐ ๋ด๋ฆผ)
์ฌ๊ท ํจ์