์ •๋ ฌ

๋ฐ•๋ฏธ๋ผยท2022๋…„ 6์›” 28์ผ
0

์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ชฉ๋ก ๋ณด๊ธฐ
2/3
post-thumbnail

๐Ÿ“๊ณ„์† ์ถ”๊ฐ€ํ•  ์˜ˆ์ •

๐Ÿ“Œ์ •๋ ฌ

๐Ÿ“์ •์˜

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)

๐Ÿ“๊ตฌํ˜„

์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”

0๊ฐœ์˜ ๋Œ“๊ธ€