[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…๊ณต๋ถ€ :: ์ตœ๋Œ€ ์ตœ์†Œ ์ฐพ๊ธฐ (ํ† ๋„ˆ๋จผํŠธ ํŠธ๋ฆฌ, selection ์•Œ๊ณ ๋ฆฌ์ฆ˜)

์ตœ๋Œ€ ์ตœ์†Œ ์ฐพ๊ธฐ

์„ ํƒ ๋ฌธ์ œ

์ฃผ์–ด์ง„ ๋ฆฌ์ŠคํŠธ์˜ ์ตœ๋Œ€, ์ตœ์†Œ ๊ฐ’์„ ์ฐพ๊ฑฐ๋‚˜ n๋ฒˆ์งธ ํฐ ๊ฐ’, n๋ฒˆ์งธ ์ž‘์€ ๊ฐ’์„ ์ฐพ๋Š” ๊ณผ์ •๋„ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋งŽ์ด ๋“ฑ์žฅํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ n๊ฐœ์˜ ์ˆซ์ž๋“ค ์ค‘ k๋ฒˆ์งธ๋กœ ์ž‘์€(๋˜๋Š” ํฐ) ๊ฐ’์„ ์ฐพ๋Š” ๋ฌธ์ œ๋ฅผ 'Selection problem' ์ฆ‰, ์„ ํƒ ๋ฌธ์ œ ๋ผ๊ณ  ํ•œ๋‹ค.

 

์ตœ๋Œ€ ์ตœ์†Œ ์ฐพ๊ธฐ

์„ ํƒ ๋ฌธ์ œ์—์„œ ๊ฐ€์žฅ ์‰ฌ์šด ๋ฌธ์ œ๊ฐ€ ์ตœ๋Œ€ / ์ตœ์†Œ๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ์ด๋‹ค. ์ฃผ์–ด์ง„ ๋ฆฌ์ŠคํŠธ์˜ ์ตœ๋Œ€๊ฐ’์„ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์–ด๋–ค ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ ๊นŒ?

 

์ •๋ ฌ

๋จผ์ €, ์ด์ „์— ๋ฐฐ์› ๋˜ ์ •๋ ฌ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ •๋ ฌ ํ›„ ๋ฆฌ์ŠคํŠธ์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉด ์ตœ๋Œ€๊ฐ’์„ ์•Œ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ค‘๊ฐ„ ์š”์†Œ๋“ค์˜ ์ •๋ ฌ์€ ์ตœ๋Œ€๊ฐ’์„ ์ฐพ๋Š”๋ฐ์— ๋ถˆํ•„์š”ํ•œ ๊ณผ์ •์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ •๋ ฌ์„ ์ด์šฉํ•˜๋ฉด ์ •๋ ฌ์˜ ์ตœ์†Œ ์‹œ๊ฐ„๋ณต์žก๋„์ธ O(nlgn)๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

min/max

๋‘๋ฒˆ์งธ๋Š” ์„ ํƒ ์ •๋ ฌ์—์„œ ๋ฐ˜๋ณต๋ฌธ ํ•œ ๋ฒˆ์— ์‚ฌ์šฉํ–ˆ๋˜ ๋ฐฉ์‹์ฒ˜๋Ÿผ, ์š”์†Œ๋“ค์„ 2๊ฐœ์”ฉ ๋ฌถ์–ด ๋น„๊ตํ•จ์œผ๋กœ์จ ์ตœ๋Œ€๊ฐ’์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(n)์ด์ง€๋งŒ ์ตœ๋Œ€ / ์ตœ์†Œ ๊ฐ’์„ ๋™์‹œ์— ์ฐพ์„ ์ˆ˜ ์—†๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

int max = 0;
for(int i=0; i<length; i++){
    if(arr[i]>max)
        max = arr[i];
}

๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ตœ๋Œ€ / ์ตœ์†Œ๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•

 

์„ ํƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜

์„ ํƒ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ๊ฒƒ์— ์ตœ์ ํ™”๋œ ์„ ํƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Selection algorithm)์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉด O(n)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋กœ ์ตœ๋Œ€ / ์ตœ์†Œ ๊ฐ’์„ ํ•œ๋ฒˆ์— ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž์„ธํžˆ ์‚ดํŽด๋ณด์ž.

 

๋จผ์ € ์ฃผ์–ด์ง„ ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋ฅผ 2๊ฐœ์”ฉ ๋ฌถ์–ด์„œ ๋ฌถ์Œ ๋ณ„ ์ตœ๋Œ€ / ์ตœ์†Œ๋ฅผ ๊ตฌํ•œ๋‹ค. ์ด ๊ณผ์ •์€ n/2์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

 

๋ฌถ์Œ ๋ณ„ ์ตœ๋Œ€ ๊ฐ’๋“ค ์ค‘ ์ตœ๋Œ€๋ฅผ ๊ตฌํ•˜๋ฉด ๋ฆฌ์ŠคํŠธ์˜ ์ตœ๋Œ€๊ฐ’์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๊ณ , ๋ฌถ์Œ ๋ณ„ ์ตœ์†Œ ๊ฐ’๋“ค ์ค‘ ์ตœ์†Œ๋ฅผ ๊ตฌํ•˜๋ฉด ๋ฆฌ์ŠคํŠธ์˜ ์ตœ์†Œ๊ฐ’์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ณผ์ •์€ n/2-1 ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค. ๋”ฐ๋ผ์„œ ์ „์ฒด ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(n)์ด๋ฉฐ ์ตœ๋Œ€/์ตœ์†Œ๊ฐ’์„ ๋™์‹œ์— ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

n๋ฒˆ์งธ ํฐ ๊ฐ’ ์ฐพ๊ธฐ

์ด์ œ ๊ฐ€์žฅ ์‰ฌ์šด ์„ ํƒ ๋ฌธ์ œ์ธ '์ตœ๋Œ€ ์ตœ์†Œ ๋ฌธ์ œ'๋ฅผ ๋ฒ—์–ด๋‚˜ n๋ฒˆ์งธ ํฐ ๊ฐ’์„ ์ฐพ์•„๋ณด์ž. n์ด ๋ช‡์ด๋ƒ์— ๋”ฐ๋ผ์„œ ์ตœ์ ์˜ ๋ฐฉ๋ฒ•์€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” 2๋ฒˆ์งธ ํฐ ๊ฐ’์„ ์ฐพ๋Š” ๊ฒƒ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด๋ณด๊ฒ ๋‹ค.

์ตœ๋Œ€/์ตœ์†Œ ๋ฌธ์ œ์—์„œ์™€ ๊ฐ™์ด ์ •๋ ฌ์„ ์ด์šฉํ•˜์—ฌ index๋กœ ์ ‘๊ทผํ•˜์—ฌ๋„ ๋˜์ง€๋งŒ ์—ญ์‹œ๋‚˜ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๋ฌธ์ œ์ด๋‹ค.

์ตœ๋Œ€/์ตœ์†Œ๊ฐ’์„ ์ฐพ์•„ ํ•˜๋‚˜์”ฉ ์ œ๊ฑฐํ•ด๋‚˜๊ฐ€๋Š” ๋ฐฉ๋ฒ•๋„ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ํฌ๋‹ค. ์ฒ˜์Œ ์ตœ๋Œ€๊ฐ’์„ ์ฐพ์„ ๋•Œ n-1, ์ตœ๋Œ€๊ฐ’์„ ์ œ์™ธํ•œ ํ›„ ์ตœ๋Œ€๊ฐ’์„ ๋‹ค์‹œ ์ฐพ์„ ๋•Œ n-2 ์ด๋ฏ€๋กœ ์ด 2n-3์˜ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๋“ ๋‹ค.

 

ํ† ๋„ˆ๋จผํŠธ ํŠธ๋ฆฌ

์ด๋ฒˆ์—๋Š” ํ† ๋„ˆ๋จผํŠธ ํŠธ๋ฆฌ๋ฅผ ์ด์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด๋ณด์ž.

ํ† ๋„ˆ๋จผํŠธ ํŠธ๋ฆฌ๋Š” ์œ„์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ, ๋ฆฌํ”„๋…ธ๋“œ๋ถ€ํ„ฐ ๋‘๊ฐœ์”ฉ ๋น„๊ตํ•ด์„œ ๋” ํฐ ์š”์†Œ๊ฐ€ ์œ„๋กœ ์˜ฌ๋ผ๊ฐ€๋Š” ๊ตฌ์กฐ์ด๋‹ค.

 

 ์ด๋Š” ์œ„์˜ ์ตœ๋Œ€/์ตœ์†Œ ์ฐพ๊ธฐ์—์„œ ์‚ดํŽด๋ณด์•˜๋˜ ๋‘๊ฐœ์”ฉ ๋ฌถ๋Š” ๊ตฌ์กฐ์™€ ๋น„์Šทํ•˜์ง€๋งŒ ์กฐ๊ธˆ ๋‹ค๋ฅด๋‹ค. ์œ„์˜ ๊ทธ๋ฆผ์„ ๋น„๊ตํ•ด๋ณด๋ฉด ์ฐจ์ด์ ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 ํ† ๋„ˆ๋จผํŠธ ํŠธ๋ฆฌ๋Š” ๊ฐ ๋ฌถ์Œ์˜ ์ตœ๋Œ€๊ฐ’๋“ค์„ ๋‹ค์‹œ๊ธˆ ๋ฌถ๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค. ํ•œ๋ฒˆ์˜ ๋น„๊ต๋งˆ๋‹ค ํ•œ ๋ช…์˜ winner์™€ ํ•œ ๋ช…์˜ loser๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋ฅผ ์ด์šฉํ•˜๋ฉด n๋ฒˆ์งธ ํฐ ๊ฐ’์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

 2๋ฒˆ์งธ๋กœ ํฐ ๊ฐ’์„ ์ฐพ๊ธฐ๋กœ ํ–ˆ์œผ๋‹ˆ, ๊ทธ ํ›„๋ณด๋ฅผ ์‚ดํŽด๋ณด์ž. ์ผ๋‹จ 3์€ ๊ฐ€์žฅ ํฐ ๊ฐ’์ด๋ฏ€๋กœ ์•„๋‹ˆ๊ณ  3๊ณผ ๋Œ€๊ฒฐ ์‹œ ์กŒ๋˜ ๊ฐ’๋“ค ์ค‘์— ํ•˜๋‚˜๊ฐ€ 2๋ฒˆ์งธ๋กœ ํฐ ๊ฐ’์ผ ๊ฒƒ์ด๋‹ค.

 

 

 ๋”ฐ๋ผ์„œ ์œ„์˜ ํŠธ๋ฆฌ์—์„œ 1,4,7์ด ํ›„๋ณด๊ฐ€ ๋œ๋‹ค. 2๋ฒˆ์งธ๋กœ ํฐ ๊ฐ’์€ ์ด ์ค‘์— ๊ฐ€์žฅ ํฐ ๊ฐ’์ด๋ฏ€๋กœ min/max ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์ฐพ์•„๋‚ด๋ฉด ๋œ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ์ตœ๋Œ€๊ฐ’์„ ์ฐพ๋Š”๋ฐ์— n-1, ํ›„๋ณด๋“ค ์ค‘ ์ตœ๋Œ€ ๊ฐ’์„ ์ฐพ๋Š”๋ฐ lgn-1 ์ด ๋“œ๋ฏ€๋กœ ์ด n+lgn-2 ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๋“ ๋‹ค. ๋”ฐ๋ผ์„œ ์œ„์˜ 2n-3 ๋ณด๋‹ค ๋‚ฎ์€ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

ํ›„๋ณด๋“ค์ด lgn๊ฐœ์ธ ๊ฒƒ์€ 3์ด lgn๋ฒˆ์˜ ๋Œ€๊ฒฐ์—์„œ ์ด๊ฒผ์Œ์„ ์˜๋ฏธํ•œ๋‹ค.

 ์ด๋ฒˆ์—๋Š” 2๋ฒˆ์งธ๋กœ ํฐ ๊ฐ’์œผ๋กœ ์˜ˆ๋ฅผ ๋“ค์—ˆ์ง€๋งŒ, ๊ฐ๊ฐ์˜ n์— ๋Œ€ํ•ด์„œ ์ตœ์ ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‰ฝ๊ฒŒ ๋” ํฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ•ด๊ฒฐํ•˜๋ ค๋“ค์ง€ ๋ง๊ณ , key์˜ ๊ฐฏ์ˆ˜๊ฐ€ ์ •ํ•ด์ ธ์žˆ์„ ๋•Œ๋Š” ๋ณธ์ธ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•ด๋ณด๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

O(n) ์„ ํƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋งค๋ฒˆ n๋ฒˆ์งธ ๊ฐ’์„ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์šฐ๋ฆฌ๊ฐ€ ์งœ๋ฉด ๋˜๊ฒ ์ง€๋งŒ(^ใ… ^..) ํšจ์œจ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ด๋ฏธ ๋‚˜์™€์žˆ๋‹ค. ๊ณผ์ •์„ ์‚ดํŽด๋ณด์ž.

  1. ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ ๊ฐฏ์ˆ˜๊ฐ€ 5์ดํ•˜๋ผ๋ฉด ๊ธฐ๋ณธ ๋น„๊ต๋กœ ๋Œ€์ฒดํ•œ๋‹ค.

๊ธฐ๋ณธ ๋น„๊ต

 

  1. ๋ฆฌ์ŠคํŠธ๋ฅผ 5๊ฐœ์”ฉ ๋ฌถ์Œ์œผ๋กœ ๋‚˜๋ˆˆ ํ›„, ๊ฐ ๋ฌถ์Œ์˜ ์ค‘๊ฐ„ ๊ฐ’(median)์„ ์ฐพ๋Š”๋‹ค.

๊ธฐ๋ณธ ๋น„๊ต๋กœ ์ค‘๊ฐ„ ๊ฐ’์„ ์ฐพ์œผ๋ฉฐ, ์ด๋ฅผ median(M)์ด๋ผ๊ณ  ๋ถ€๋ฅด๊ณ  ๊ฐ€์šด๋ฐ์— ๋ฐฐ์น˜ํ•œ๋‹ค. ์œ„์—๋Š” M๋ณด๋‹ค ํฐ ๊ฐ’, ์•„๋ž˜์—๋Š” M๋ณด๋‹ค ์ž‘์€ ๊ฐ’์„ 2๊ฐœ์”ฉ ๋ฐฐ์น˜ํ•œ๋‹ค. ๋ชจ๋“  set์— ๋Œ€ํ•ด ์œ„์˜ ๊ณผ์ •์„ ๋งˆ์น˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ชจ์–‘์ด ๋œ๋‹ค.

 

  1. ์ค‘๊ฐ„ ๊ฐ’์˜ ์ค‘๊ฐ„ ๊ฐ’ (median๋“ค์˜ median)์„ ์ฐพ๋Š”๋‹ค.

์ด๋Š” ์ „์ฒด set์˜ median์€ ์•„๋‹ˆ๋ฏ€๋กœ ๋ฐ”๋กœ ๋‹ต์ด ๋  ์ˆ˜๋Š” ์—†๋‹ค. median์„ ์ฐพ์„ ๋•Œ๋Š” ์žฌ๊ท€ ๋ฐฉ์‹์œผ๋กœ ํ˜„์žฌ ์ง„ํ–‰ ์ค‘์ธ ๊ณผ์ •์„ ์žฌํ˜ธ์ถœํ•˜๋ฉด ๋œ๋‹ค. median์˜ median(m*)์„ ์ฐพ์€ ํ›„์— ์™ผ์ชฝ์—๋Š” ์ด๋ณด๋‹ค ์ž‘์€ median์˜ set๋“ค์ด ์˜ค๋ฅธ์ชฝ์—๋Š” ์ด๋ณด๋‹ค ํฐ median์˜ set๋“ค์ด ์œ„์น˜ํ•˜๊ฒŒ ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ชจ์–‘์ด ๋œ๋‹ค.

A, B, C, D 4๊ทธ๋ฃน์œผ๋กœ ๊ฐ ์š”์†Œ๋ฅผ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๊ณ , ๊ฐ๊ฐ์˜ ๊ทธ๋ฃน์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

  • A, D : m*๊ณผ ๋น„๊ตํ•ด์„œ ๋Œ€์†Œ๊ด€๊ณ„๋ฅผ ์•Œ ์ˆ˜ ์—†๋‹ค.
  • B : m*๊ณผ ๋น„๊ตํ•ด์„œ ํฐ ๊ฐ’๋“ค์˜ ๋ชจ์ž„์ด๋‹ค.
  • C : m*๊ณผ ๋น„๊ตํ•ด์„œ ์ž‘์€ ๊ฐ’๋“ค์˜ ๋ชจ์ž„์ด๋‹ค.

S1, S2์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ๊ทธ๋ฃน์„ ์ •์˜ํ•ด๋ณด์ž.

  • S1 : C์™€ (A+D)์—์„œ m*๋ณด๋‹ค ์ž‘์€ ์ˆ˜๋“ค
  • S2 : B์™€ (A+D)์—์„œ m*๋ณด๋‹ค ํฐ ์ˆ˜๋“ค

S1, S2๋Š” A, D์˜ ์š”์†Œ๋“ค์„ ๋ชจ๋‘ m*๊ณผ ๋น„๊ตํ•จ์œผ๋กœ์จ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

  1. k๋ฒˆ์งธ ์š”์†Œ์˜ ์œ„์น˜๋ฅผ ํ™•์ธํ•œ๋‹ค.

k๊ฐ€ S1์˜ ํฌ๊ธฐ๋ณด๋‹ค ์ž‘์œผ๋ฉด ์žฌ๊ท€์ ์œผ๋กœ S1์— ๋Œ€ํ•œ ์„ ํƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋˜๊ณ , S1์˜ ํฌ๊ธฐ๋ณด๋‹ค ํฌ๋ฉด ์žฌ๊ท€์ ์œผ๋กœ S2์— ๋Œ€ํ•œ ์„ ํƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋œ๋‹ค. ๋”ฑ k๋ผ๋ฉด m*๊ฐ€ k๋ฒˆ์งธ key์ด๋‹ค.

if(S1.size()+1==k)
    answer = mStar;
else if(S1.size()>k)
    Selection(S1);
else if(S1.size()<k)
    Selection(S2);

 

์‹œ๊ฐ„ ๋ณต์žก๋„

  1. ๋ฆฌ์ŠคํŠธ๋ฅผ 5๊ฐœ์”ฉ ๋ฌถ์Œ์œผ๋กœ ๋‚˜๋ˆˆ ํ›„, ๊ฐ ๋ฌถ์Œ์˜ ์ค‘๊ฐ„ ๊ฐ’(median)์„ ์ฐพ๋Š”๋‹ค.

๊ธฐ๋ณธ ๋น„๊ต๋Š” 6๋ฒˆ์˜ ๋น„๊ต๋ฅผ ํ•„์š”๋กœ ํ•˜๋ฏ€๋กœ, set์˜ ๊ฐฏ์ˆ˜(n/5)์— 6์„ ๊ณฑํ•œ 6(n/5)์ด 2๋ฒˆ ๊ณผ์ •์˜ ์‹œ๊ฐ„๋ณต์žก๋„์ด๋‹ค.

  1. ์ค‘๊ฐ„ ๊ฐ’์˜ ์ค‘๊ฐ„ ๊ฐ’ (median๋“ค์˜ median)์„ ์ฐพ๋Š”๋‹ค.

    Selection ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ตœ์•…์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ W(n)์ด๋ผ ํ•˜๋ฉด, ์žฌ๊ท€์ ์œผ๋กœ median์˜ ์ง‘ํ•ฉ๋งŒ์„ ๋„ฃ๋Š” ๊ฒƒ์ด๋ฏ€๋กœ m*์„ ์ฐพ๋Š” ๊ณผ์ •์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” W(n/5)์ด๋‹ค.

    S1, S2๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด A+D์˜ ์ง‘ํ•ฉ๊ณผ m*๋ฅผ ๋น„๊ตํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.

A+D ์ง‘ํ•ฉ์˜ ํฌ๊ธฐ๋Š” ์œ„์˜ ๊ทธ๋ฆผ์—์„œ 4r์ด๋ฏ€๋กœ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” 4r์ด๋‹ค. n์€ 5(2r+1)์ด๋‹ค.

  1. k๋ฒˆ์งธ ์š”์†Œ์˜ ์œ„์น˜๋ฅผ ํ™•์ธํ•œ๋‹ค.

์ตœ์•…์˜ ๊ฒฝ์šฐ๋Š” A+D๊ฐ€ S1, S2 ์ค‘ ํ•œ ์ชฝ์— ์†ํ•˜๋Š” ๊ฒฝ์šฐ์ด๋‹ค. ์ด ๋•Œ ์ง‘ํ•ฉ์˜ ํฌ๊ธฐ๋Š” 7r+2๊ฐ€ ๋˜๋ฏ€๋กœ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” W(7r+2)์ด๋‹ค.

๋ชจ๋“  ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ํ•ฉ์น˜๋ฉด
$$
W(n) = \frac{6n}{5}+W(\frac{n}{5})+4r+W(7r+2)
$$
์ด๋‹ค. r์„ n์— ๋งž์ถฐ ํ‘œํ˜„ํ•˜๋ฉด
$$
W(n) = 1.2n + W(0.2n) + 0.4n + W(0.7n) = 1.6n + W(0.2n)+W(0.7n)
$$
์ด๊ณ  ์žฌ๊ท€์ ์œผ๋กœ ๋‚˜ํƒ€๋‚ธ ํ›„ ์ƒ์ˆ˜ํ•ญ๋งŒ ๋ณด๋ฉด

1.6n => 1.6(.9)n => 1.6(.81)n ...

0.9์”ฉ ๋Š˜์–ด๊ฐ€๋ฏ€๋กœ ๋‹ค ๋”ํ•˜๋ฉด 16n๋ณด๋‹ค ์ž‘๋‹ค.

๋”ฐ๋ผ์„œ O(n) Selection Algorithm์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(n)์ด๋‹ค.

ํ˜„์žฌ๊นŒ์ง€ ๋‚˜์˜จ ๊ฐ€์žฅ ์ข‹์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ 2.95n๊นŒ์ง€ ์ค„์˜€๋‹ค๊ณ  ํ•œ๋‹ค.

 

๊ธฐ๋ณธ ๋น„๊ต

๊ธฐ๋ณธ ๋น„๊ต๋ž€ x1, x2, x3, x4, x5๊ฐ€ ์žˆ์„ ๋•Œ, (x1, x2) => (x3, x4) => (x1, x3) => (x2, x5) => (x2, x3) => (x3, x5) ์™€ ๊ฐ™์€ 6๋ฒˆ์˜ ๋น„๊ต๋กœ ์ค‘๊ฐ„ ๊ฐ’์„ ์ฐพ์•„๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋น„๊ต ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

๋ฐ˜์‘ํ˜•