๋น
์ค ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๋ ๊ณต๊ฐ๋ณต์ก๋๋ฅผ ํํํ ๋ ์ฌ์ฉ๋๋ ์ํ์ ํ๊ธฐ๋ฒ
์
๋ ฅ ํฌ๊ธฐ n์ ๋ํด ๊ฐ์ฅ ์ง๋ฐฐ์ ์ธ ์ฐ์ฐ ํ์(์ฑ์ฅ๋ฅ )๋ฅผ ์ํ์ ์ผ๋ก ํํํ ๊ฒ์ผ๋ก ์ต์
์ ๊ฒฝ์ฐ ๊ธฐ์ค์ผ๋ก ํํํจ
a = arr[0] ์ ๊ฒฝ์ฐ ์
๋ ฅ ํฌ๊ธฐ์ ๊ด๊ณ์์ด ํญ์ ์ผ์ ํ ์๊ฐ์ผ๋ก O(1)
์ด์ง ํ์์ ๊ฒฝ์ฐ ์
๋ ฅ์ ์ ๋ฐ์ฉ ์ค์ด๊ธฐ ๋๋ฌธ์ O(log n)
์ ํ ํ์์ ๊ฒฝ์ฐ ํ ๋ฒ์ฉ ๋ค ํ๊ธฐ ๋๋ฌธ์ O(n)
๋จธ์ง ์ ๋ ฌ์ ๊ฒฝ์ฐ ๊ฑฐ์ ๋ชจ๋ ํจ์จ์ ์ธ ์ ๋ ฌ๋ก O(n log n)
์ค์ฒฉ ๋ฐ๋ณต๋ฌธ์ ๊ฒฝ์ฐ O(n^2)
์ฌ๊ท ์กฐํฉ์ ๊ฒฝ์ฐ O(2^n)
์์ ํ์(์์ด)์ ๊ฒฝ์ฐ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ํ์ํ๊ธฐ ๋๋ฌธ์ O(n!)
O(n+n^2)์ ๊ฒฝ์ฐ n^2๊ฐ n๋ณด๋ค ํจ์ฌ ๋นจ๋ฆฌ ์ปค์ง์ผ๋ก ๋น
์ค ํ๊ธฐ๋ฒ์ผ๋ก๋ O(n^2)๋ก ํ๊ธฐํจ
void example1(int n){
for(int i=0; i<n;i++){
cout << i << endl;
}
}
์๊ฐ ๋ณต์ก๋๋ O(n)
void example2(int n){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cout<<i+j<<endl;
}
}
}
์๊ฐ ๋ณต์ก๋๋ O(n^2)
void example3(int n){
for(int i=0;i<n;i++){
for(int j=0;j<5;j++){
cout<<i+j<<endl;
}
}
}
์๊ฐ ๋ณต์ก๋๋ O(n)
์์ชฝ ๋ฃจํ์ ๊ฒฝ์ฐ์๋ 5๊น์ง๋ง ์๋ํ๊ธฐ ๋๋ฌธ์ ๋ฌด์ํจ์ผ๋ก O(n)
void example4(int n){
int i=1;
while(i<n){
cout<<i<<endl;
i*=3;
}
}
์๊ฐ ๋ณต์ก๋๋ O(log n)
i *=3 ์ 3๋ฐฐ์ฉ ์ฆ๊ฐํด์ ๋ฐ๋ณต ํ์๋ log3(n)
void example5(int n){
if(n==0) return;
cout<<n<<endl;
example5(n-1);
}
์๊ฐ ๋ณต์ก๋๋ O(n)
ํ๋ฒ ํธ์ถ๋ง๋ค 1์ฉ ์ค์ด๋ค์ด์ ์ด n๋ฒ ํธ์ถ
void recur(int n){
if(n==0) return;
recur(n-1);
recur(n-1);
}
์๊ฐ ๋ณต์ก๋๋ O(2^n)
์ด์ง ํธ๋ฆฌ์ฒ๋ผ ํผ์ง๊ธฐ๋๋ฌธ์ ์ด ํธ์ถ์๋ 2^n-1 ๋ฒ