๐Ÿ•ธ Algorithm/๐Ÿ•ธ ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜

[Java/Algorithm]์ด์ง„๊ฒ€์ƒ‰ Binary search

๋‰ด์ด NUEY 2024. 10. 17. 19:35
๋ฐ˜์‘ํ˜•

 

์ด์ง„ ๊ฒ€์ƒ‰
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๋กœ ์ขํ˜€์ง‘๋‹ˆ๋‹ค.
  • ๋ฒ”์œ„๋ฅผ ๋ฐ˜์œผ๋กœ ์ค„์ด๋Š” ์ด ๊ณผ์ •์„ ์ฐพ๋Š” ๊ฐ’์ด ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ๊ณ„์†ํ•ด์„œ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ๋Š” ์•„๋ž˜..


์ข…๋ฃŒ์กฐ๊ฑด
  1. pc์™€ ์ฐพ๋Š” ๊ฐ’ key๊ฐ€ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ (๊ฒ€์ƒ‰ ์„ฑ๊ณต)
  2. ๊ฒ€์ƒ‰ ๋ฒ”์œ„๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ (๊ฒ€์ƒ‰ ์‹คํŒจ)

code

์ฑ… ๋ณธ๋ฌธ์— ๋‚˜์˜จ ๋‚ด์šฉ์—์„œ ์ž…๋ ฅ๊ฐ’์„ Random์œผ๋กœ, array๋ฅผ list๋กœ ๋ฐ”๊ฟ”์„œ ์ •๋ ฌํ›„ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.

  • ๋ฐ˜๋ณต๋ฌธ ์•ˆ์—์„œ ์ค‘์•™๊ฐ’pc๊ฐ€ ์ฐพ๋Š”๊ฐ’key์™€ ์ผ์น˜ํ•˜๋„๋ก ์ขํ˜€๊ฐ€๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
  • ์ค‘์•™๊ฐ’pc๊ฐ€ key๋ณด๋‹ค ์ž‘์œผ๋ฉด
    → ๊ฒ€์ƒ‰๋ฒ”์œ„์—์„œ ์š”์†Œ์˜ ์‹œ์ž‘์„ ์ค‘์•™ ๋’ค ์ธ๋ฑ์Šค๋กœ ๋ฐ”๊พผ๋‹ค.
  • ๋ฐ˜๋Œ€๋กœ ์ค‘์•™๊ฐ’pc๊ฐ€ key๋ณด๋‹ค ํฌ๋ฉด
    → ๊ฒ€์ƒ‰๋ฒ”์œ„์—์„œ ์š”์†Œ์˜ ๋์€ ์ค‘์•™ ์•ž ์ธ๋ฑ์Šค๋กœ ๋ฐ”๊พผ๋‹ค.

 

๋ฐ˜์‘ํ˜•