2021. 3. 16. 10:55ใ์ ๊ณต ๊ณผ๋ชฉ/์ปดํจํฐ ์๊ณ ๋ฆฌ์ฆ
์๊ณ ๋ฆฌ์ฆ - ๋ถํ ์ ๋ณต
1) ๋ถํ : ํด๊ฒฐํ๊ธฐ ์ฝ๋๋ก ๋ฌธ์ ๋ฅผ ์์ ๋ถ๋ถ์ผ๋ก ๋๋๋ค.
2) ์ ๋ณต : ๋๋ ์์ ๋ฌธ์ ๋ฅผ “๊ฐ๊ฐ” ํด๊ฒฐํ๋ค.
3) ํตํฉ : (ํ์ํ๋ค๋ฉด) ํด๊ฒฐ๋ ํด๋ต์ ๋ชจ์๋ค.
์ด๋ฌํ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์(top-down)ํํฅ์ ์ ๊ทผ๋ฐฉ๋ฒ ์ด๋ผ๊ณ ํ๋ค.
์ด๋ ์ด๋ถ๊ฒ์(Binary Search) ์ฌ๊ท ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ๋ค.
์ด๋ถ๊ฒ์์ O(logn)์ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค. ์์ฐจ๊ฒ์์ด O(n)์ด ๊ฑธ๋ฆฌ๋ ๊ฒ์ ๋ณด๋ฉด ๋์ฑ ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ธ ๊ฒ์ ์ ์ ์๋ค.
์ด๋ถ๊ฒ์์ ์ค๊ณ์ ๋ต:
1) x๊ฐ ๋ฐฐ์ด์ ์ค๊ฐ์ ํญ๋ชฉ๊ณผ ๊ฐ์ผ๋ฉด ๋น๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด:
๋ถํ : ๋ฐฐ์ด์ ๋๋์ด์ x๊ฐ ์ค์๋ณด๋ค ์์ผ๋ฉด ์ผ์ชฝ์ ์์นํ ๋ฐ์ชฝ์ ์ ํํ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด ์ค๋ฅธ์ชฝ์ ์์นํ ๋ฐฐ์ด ๋ฐ์ชฝ์ ์ ํํ๋ค.
2) ์ ๋ณต : ์ ํ๋ ๋ฐ์ชฝ ๋ฐฐ์ด์์ x๋ฅผ ์ฐพ๋๋ค.
3) ์ด ๋ ๊ฐ๋ฅผ ๋ฐ๋ณตํ๋ค.
4) (์ด ๋)ํตํฉ์ ์ฌ์ฉ๋์ง ์๋๋ค.
index location (index low, index high){
index mid;
if(low>high)
return 0;
else {
mid = (low + high) /2
if( x == S[mid])
return mid;
else if( x <S[mid])
return location(low, mid-1);
else
return location(mid+1, high);
}
}
...
locationout = location(1,n);
๊ณ ์ฐฐ : ์์ ์ฌ๊ทํจ์์ ํ๋ผ๋ฏธํฐ (S,n)๊ณผ ๊ฐ์ ๊ฒ๋ค์ ๋ณํ์ง ์๋ ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ๋ญ๋น๊ฐ ๋๋ค.
์ด๋ฅผ ๊ผฌ๋ฆฌ ์ฌ๊ทํธ์ถ์ด๋ผ๊ณ ํ๋๋ฐ ์ด์ ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ณต ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋ณํํ๊ธฐ ์์ํ๋ค. ๊ทธ๋ ๋ค๊ณ ๋ฐ๋์ ๋ณต์ก๋๊ฐ ์ฌ๊ท๋ณด๋ค ์ข๋ค๋ ๊ฒ์ ์๋๋ค. ๋ฐ๋ณต ์๊ณ ๋ฆฌ์ฆ์ด ์์์ ์ผ๋ก๋ง ์ข๋ค๋ ๋ง์ด๋ค.
๋ถํ ์ ๋ณต์ ์๊ฐ ๋ณต์ก๋
'์ ๊ณต ๊ณผ๋ชฉ > ์ปดํจํฐ ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๊ณ ๋ฆฌ์ฆ - ํฉ๋ณ์ ๋ ฌ (0) | 2021.03.17 |
---|