๋ฐ์ํ
์ด์ง ๊ฒ์
Binary search
โป์ด์ง ๊ฒ์์ ์ ๋ ฌsort๋์ด ์๋ ๊ฐ์ ๋์์ผ๋ก ๊ฒ์ํฉ๋๋ค.
์ ํ ๊ฒ์๋ณด๋ค ํจ์จ์ด ์ข์ต๋๋ค(๋น ๋ฆ ๋๋ค.).
- ๋ฐฐ์ด์์ ์ธ๋ฑ์ค์ ์ฒ์, ์ค์, ๋์ ์ด๋ฆ์ ๋ถ์ธ๋ค๋ฉด
→ pl, pc, pr ์ด๋ผ ์ง์ ํฉ๋๋ค.
pl | pc | pr | |||||||
์ธ๋ฑ์ค | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
๊ฐ | 5 | 15 | 28 | 31 | 39 | 58 | 68 | 70 | 95 |
- ๊ฒ์์ ์์ํ๊ธฐ ์ ์ด ์
์ ์๋์ ๊ฐ์ด ์ด๊ธฐํํฉ๋๋ค.
- pl : 0
- pc : (n - 1) / 2
- pr : n-1
- ๊ฒ์ํ ๊ฐ์ด ์ค์๊ฐpc๋ณด๋ค ํฐ/์์ ์ง ์ ๋ฐ๋ ๊ฒ์ ๋ฒ์๊ฐ ๋ฐ์ผ๋ก ์ขํ์ง๋๋ค.
→ ex) ์ฐพ๋ ๊ฐ์ด 15์ผ ๊ฒฝ์ฐ, pc๋ณด๋ค ์์ผ๋ฏ๋ก ๋ฒ์๊ฐ pl ~ pc๋ก ์ขํ์ง๋๋ค. - ๋ฒ์๋ฅผ ๋ฐ์ผ๋ก ์ค์ด๋ ์ด ๊ณผ์ ์ ์ฐพ๋ ๊ฐ์ด ๋์ฌ ๋๊น์ง ๊ณ์ํด์ ๋ฐ๋ณตํฉ๋๋ค.
์์๋ ์๋..
์ข ๋ฃ์กฐ๊ฑด
- pc์ ์ฐพ๋ ๊ฐ key๊ฐ ์ผ์นํ๋ ๊ฒฝ์ฐ (๊ฒ์ ์ฑ๊ณต)
- ๊ฒ์ ๋ฒ์๊ฐ ์๋ ๊ฒฝ์ฐ (๊ฒ์ ์คํจ)
code
- ๋ฐ๋ณต๋ฌธ ์์์ ์ค์๊ฐpc๊ฐ ์ฐพ๋๊ฐkey์ ์ผ์นํ๋๋ก ์ขํ๊ฐ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
- ์ค์๊ฐpc๊ฐ key๋ณด๋ค ์์ผ๋ฉด
→ ๊ฒ์๋ฒ์์์ ์์์ ์์์ ์ค์ ๋ค ์ธ๋ฑ์ค๋ก ๋ฐ๊พผ๋ค.
- ๋ฐ๋๋ก ์ค์๊ฐpc๊ฐ key๋ณด๋ค ํฌ๋ฉด
→ ๊ฒ์๋ฒ์์์ ์์์ ๋์ ์ค์ ์ ์ธ๋ฑ์ค๋ก ๋ฐ๊พผ๋ค.
๋ฐ์ํ
'๐ธ Algorithm > ๐ธ ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java/Algorithm]java.util.Arrays ์ binarSearch (0) | 2024.10.21 |
---|---|
[Java/Algorithm]๋ณต์ก๋ Complexity (1) | 2024.10.19 |
[Java/Algorithm]์ ํ๊ฒ์๊ณผ ๋ณด์ด๋ฒ (0) | 2024.10.17 |
[Java/Algorithm]๋ฐฐ์ด๊ณผ ํด๋์ค (1) | 2024.10.17 |
[Java/Algorithm]์์์ ํฉ์ฑ์ (0) | 2024.08.31 |