๐๊ณ์ ์ถ๊ฐํ ์์
n๊ฐ์ ์ซ์๊ฐ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ก์ ๋, ์ด๋ฅผ ์ฌ์ฉ์๊ฐ ์ง์ ํ ๊ธฐ์ค์ ๋ง๊ฒ ์ ๋ ฌํ์ฌ ์ถ๋ ฅํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
Big O
1๏ธโฃ ๋ฐฐ์ด์ 2๊ฐ์ ์์ดํ ์ ์ ํํ ํ ๋น๊ต
2๏ธโฃ ์ผ์ชฝ์ด ์ค๋ฅธ์ชฝ๋ณด๋ค ํด ๊ฒฝ์ฐ, ๊ตํํจ
3๏ธโฃ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํด์ ํด๋น ํ๋ก์ธ์ค๋ฅผ ๋ฐ๋ณต
O(n^2)
#include <iostream>
using namespace std;
int main(void)
{
int arr[5] = {5,4,3,2,1};
int swap;
//๋ฒ๋ธ์ ๋ ฌ: ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
for(int i=0; i<4; i++){
//1๋ฒ ํ์ ํ ๋๋ง๋ค ๋งจ ๋์ ๊ฐ์ฅ ํฐ ์๊ฐ ๊ฐ๊ฒ๋จ.
//๊ทธ๊ฑธ ๋งจ ์๊น์ง ํ๊ธฐ ์ํด์ ์ด 4๋ฒ์ ์ฌ์ดํด์ด ํ์ํจ.
//์ด์ฐจํผ [1] ์๋ฆฌ๊น์ง๋ง ์ ํด์ง๋ฉด [0]์ ๋ง์ง๋ง ํ๋๋ก ์๋์ผ๋ก ์ ํด์ง๊ธฐ ๋๋ฌธ์ ๊ตณ์ด 5๋ฒ ํ ํ์๊ฐ ์์.
for(int z=0; z<4; z++){
//4๊น์ง ํ๋ ์ด์ ๋ ๋ฐ์ ์ฝ๋๋ฅผ ๋ณด๋ฉด z+1์ด ์กด์ฌํ๋ฏ๋ก [3]๊น์ง๋ง ์ค์ ํ๋ฉด [4]๊น์ง ๋น๊ต๊ฐ ๊ฐ๋ฅํ๊ฒ ๋จ.
if(arr[z] > arr[z+1]){
swap = arr[z];
arr[z] = arr[z+1];
arr[z+1] = swap;
}
}
}
for(int i=0; i<5; i++){
cout << arr[i] << endl;
}
return 0;
}
1๏ธโฃ ์ ์ฒด ์์ดํ ์ค์์ ์ฒซ ๋ฒ์งธ์ ์์นํ ์์ดํ ์ ์ธ๋ฑ์ค๋ฅผ ๋ณ์์ ์ ์ฅ
2๏ธโฃ ํ์ํ๋ฉด์ ์ ์ฒด ์์ดํ ์ค์์ ๊ฐ์ฅ ์์ ์์ดํ ์ ์์น์ ์ธ๋ฑ์ค๋ฅผ ๋ณ์์ ์ ์ฅ
3๏ธโฃ ๊ฐ์ฅ ์์ ์ซ์๋ฅผ ์ฒซ ๋ฒ์งธ ์์ดํ ๊ณผ ๋ฐ๊ฟ.(์์๋ณด๊ด ํ ๋ณ์๊ฐ ํ์ํจ)
4๏ธโฃ ๊ทธ ๋ค์ ์ฌ์ดํด์ ์์ํ ๋, ์ ๋ ฌ๋์ง ์์ ๋ถ๋ถ ์ค์์ ๊ฐ์ฅ ์์ ์ซ์๋ฅผ ์ฐพ์.
O(n^2)
#include <iostream>
using namespace std;
int main(void)
{
int arr[5] = {5,4,3,2,1};
int size = 5;
int swap;
int min_index; //๊ฐ์ฅ ์์ ๊ฐ์ ๊ฐ์ง ์์์ ์ธ๋ฑ์ค๊ฐ์ ์ ์ฅํ ๋ณ์ ์ ์ธ
//์ ํ์ ๋ ฌ: ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
for(int i=0; i<(size-1); i++){
//๋ฐฐ์ด์ [0]๋ถํฐ ์๋ฅผ ์ ๋ ฌ์ํค๊ธฐ ์ํ ๋ฐ๋ณต๋ฌธ: ๊ฐ์ฅ ์์ ๊ฐ์ ์์น๋ฅผ ๋ํ๋.
min_index = i;
/*
ํ ๋ฒ ํ์ ํ ๋๋ง๋ค ์ ๋ ฌ๋์ง ์์ ๋ถ๋ถ์ ๋งจ ์์ ๊ฐ์ฅ ์์ ์ซ์๊ฐ ์์นํด์ผํจ.
๊ทธ๊ฒ์ ๋งจ ๋ค๊น์ง ํ๊ธฐ ์ํด์๋ ์ฌ์ค ๋ฐฐ์ดํฌ๊ธฐ๋งํผ ๋ฐ๋ณตํด์ผํ๋ ๊ฒ์ด ๋ง์.
๊ทธ๋ฌ๋ (๋ฐฐ์ดํฌ๊ธฐ-1)๊น์ง๋ง ๋ฐ๋ณตํด๋ ๋งจ ๋ค์ ์๊น์ง๋ ์ ๋ ฌ๋์์ผ๋ฉด ๋งจ ๋ค๋ ์๋์ผ๋ก ๊ฐ์ฅ ํฐ ์๊ฐ ์์นํจ.
๊ทธ๋์ ๊ตณ์ด ๋ฐฐ์ดํฌ๊ธฐ๋งํผ ํ ํ์๊ฐ ์์.
*/
for(int z=i+1; z<5; z++){
//(i+1)๋ถํฐ ํ๋ ์ด์ ๋ ํ์ฌ i๊น์ง๋ ์ ๋ ฌ๋์ด์์ผ๋ฏ๋ก ์ ๋ ฌ๋์ง ์์ (i+1)๋ถํฐ ์ ๋ ฌํ๋ ๊ฒ์.
//[0]์ ํ ๋๋, ์ฐ์ [0]์ธ๋ฑ์ค์ ์๋ ์๊ฐ ์ ์ผ ์๋ค๊ณ ๊ฐ์ ํ ๊ฒ์.
if(arr[min_index] > arr[z]){
min_index = z;
}
//ํ์ฌ ๊ฐ์ฅ ์์ ๊ฐ์ด ์๋ค๊ณ ๊ฐ์ ํ ์์น์ ์ธ๋ฑ์ค์ ์์๋ณด๋ค ๋ ์์ ๊ฐ์ด ์์๊ฒฝ์ฐ ์ธ๋ฑ์ค ๊ฐ์ ๋ ์์ ๊ฐ์ ์ธ๋ฑ์ค๋ก ๊ต์ฒดํจ.
}
//swap์ด๋ผ๋ ์์๋ก ์๋ฅผ ๋ณด๊ดํ ๋ณ์๊ฐ ํ์ํจ: ๊ทธ๋ ์ง ์๊ณ ๋ ๊ฐ์ ๋ณ์๋ฅผ ์ฒด์ธ์ง ํ ๊ฒฝ์ฐ ํ ๊ฐ์ด ์์ด๋ฒ๋ฆฌ๊ฒ ๋์ด ๋ ๋ณ์ ๊ฐ์ด ๋์ผํด์ง.
swap = arr[i]; //์ฐ์ , ์ ๋ ฌ๋ ๊ฐ์ด ์์นํ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง ๊ฐ์ swap์ ๋ณด๊ดํจ.
arr[i] = arr[min_index]; //์ ๋ ฌ๋ ๊ฐ์ ์๋ง์ ์์น๋ก ์ฎ๊น.
arr[min_index] = swap; //์ ๋ ฌ๋ ๊ฐ์ด ์๋ ์์น์ swap์ ๋ณด๊ด๋ ๊ฐ์ ๋ฃ์
//์ด๋ก์จ ์ ๋ ฌ๋ ๊ฐ๊ณผ, ํ์ฌ i์ธ๋ฑ์ค์ ์๋ ๊ฐ์ด ๊ตํ๋จ.
}
//๋ฐฐ์ด๊ฒฐ๊ณผ ์ถ๋ ฅ๋ฌธ
for(int i=0; i<5; i++){
cout << arr[i] << endl;
}
return 0;
}
1๏ธโฃ [1]์ง๋ฆฌ์ ์๋ ์์ดํ ์ ์ผ์ชฝ๊ณผ ๋น๊ต
2๏ธโฃ ์ผ์ชฝ๋ณด๋ค ์์ ๊ฒฝ์ฐ ์ผ์ชฝ๊ณผ swap
3๏ธโฃ ๋ฐ๊พผ ํ์๋ ์ผ์ชฝ ๋๊น์ง ๋น๊ตํ์ฌ ์์ ๊ฒฝ์ฐ์๋ง swap
4๏ธโฃ ๋๊น์ง ๋ฐ๋ณต
O(n^2)
//์ฝ์
์ ๋ ฌ
#include <iostream>
using namespace std;
int main(void)
{
int arr[5] = {8,5,6,2,4};
//[1]ํ์: 85624 -> 58624
//[2]ํ์: 58624 -> 56824 -> 56824
//[3]ํ์: 56824 -> 56284 -> 52684 -> 25684
//[4]ํ์: 25684 -> 25648 -> 25468 -> 24568 -> 24568
int key,i,z;
//์ค๋ฆ์ฐจ์ ์ ๋ ฌ
for(i=1;i<5;i++){
//์ฝ์
์ ๋ ฌ์ ์ธ๋ฑ์ค [1]๋ถํฐ ์กฐ์ฌํ๊ธฐ ๋๋ฌธ์ด๋ค.
key = arr[i];
for(z=(i-1);(z>=0 && arr[z]>key);z--){
//์ฝ์
์ ๋ ฌ์ key๊ฐ ์ฃผ์ด์ก๋ค๋ฉด ๊ทธ key์ ์ผ์ชฝ์ ์ญ์์ผ๋ก ์กฐ์ฌํ๊ธฐ ๋๋ฌธ์ key๋ณด๋ค ํ๋ ์์ ๊ฐ์ ์ธ๋ฑ์ค๋ก ์ค์
//์ญ์์ผ๋ก ์งํํ๋ค๋ณด๋ ๋ง์ง๋ง ์ธ๋ฑ์ค๋ 0์ด ๋ ๊ฒ์. ๊ทธ๋ฌ๋ค๋ณด๋ 0๋ณด๋ค ํฌ๊ฑฐ๋ ์์์ผํจ.
//z>=0 && arr[z]>key ๋ฅผ ๋์์ ํ์
ํ๋ ์ด์ ๋ ์ฝ์
์ ๋ ฌ์์ key์์ ์๋ ๊ฒ์ ์ด๋ฏธ ์ ๋ ฌ์ด ๋ผ์๊ธฐ ๋๋ฌธ์
//key๋ณด๋ค ํ๋ ์์ ์ธ๋ฑ์ค ๊ฐ์ด key๋ณด๋ค ํฌ์ง ์์ ๊ฒฝ์ฐ๋ ์ด์ฐจํผ ๊ทธ ์์ ์๋ ๊ฒ๋ key๋ณด๋ค ํฐ ๊ฐ์ด ์์ผ๋ฏ๋ก ๋๊น์ง ๋น๊ตํ ํ์๊ฐ ์์.
arr[z+1] = arr[z];
}
arr[z+1] = key;
//z๊ฐ -1๋์ด์์ผ๋ฏ๋ก ๊ทธ๊ฒ๋ณด๋ค +1ํด์ผ์ง ์์น๋ฅผ ์ฐพ์ ์ ์์.
//key๊ฐ arr[3]์ผ ๋,
//z=2, arr[2]>key -> 56884
//z=1, arr[1]>key -> 56684
//z=0, arr[0]>key -> 55684
//z=-1, -> 25684
//์๋ key์๋ฆฌ์์๋ถํฐ ์ญ์์ผ๋ก ํ ์๋ฆฌ์ฉ key๊ฐ์ด๋๋ง ๋น๊ตํ๋ฉด ๋๊ณ , ๊ทธ๋ key๊ฐ ๊ทธ ์๋ฆฌ์ ๊ฐ๋ณด๋ค ์์ผ๋ฉด key๊ฐ ๊ทธ ์๋ฆฌ๊ณ ๊ทธ ์๋ฆฌ๋ key ์๋ฆฌ์ ๋ค์ด๊ฐ์ผํจ.
//๊ทผ๋ฐ ์ฌ๊ธฐ์ key๊ฐ์ ์ ์ฅ๋์ด์์ผ๋ฏ๋ก ๊ตณ์ด ์๋ฆฌ๋ฅผ ๋ฐ๊พธ์ง ์๊ณ ๊ทธ๋ฅ key ์๋ฆฌ(๋ณธ์ธ ์์น๋ณด๋ค ํ ์๋ฆฌ ์์ ์ธ๋ฑ์ค]์ ๊ทธ ๊ฐ์ ๋ฃ์ผ๋ฉด ๋๋ ๊ฒ์.
//์ฝ์
์ ๋ ฌ์ ์ด๋ฏธ key์์๋ ์ ๋ ฌ๋์ด์๊ธฐ ๋๋ฌธ์.
}
for(int i=0;i<5;i++){
cout << arr[i] << " " ;
}
return 0;
}
1๏ธโฃ
2๏ธโฃ
3๏ธโฃ
4๏ธโฃ
O(n^2)
์ฝ๋๋ฅผ ์
๋ ฅํ์ธ์
1๏ธโฃ
2๏ธโฃ
3๏ธโฃ
4๏ธโฃ
O(n^2)
์ฝ๋๋ฅผ ์
๋ ฅํ์ธ์
1๏ธโฃ
2๏ธโฃ
3๏ธโฃ
4๏ธโฃ
O(n^2)
์ฝ๋๋ฅผ ์
๋ ฅํ์ธ์
1๏ธโฃ
2๏ธโฃ
3๏ธโฃ
4๏ธโฃ
O(n^2)
์ฝ๋๋ฅผ ์
๋ ฅํ์ธ์