๐Ÿค–/์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ •๋ฆฌ

์ •๋ ฌ (์ •์ฒ˜๊ธฐ ์ •๋ฆฌ ๋ถ€๋ถ„, C๋กœ ๊ตฌํ˜„)

sssbin 2021. 9. 10. 16:50

 

์ •๋ ฌ์€ ์ •๋ง ํ•ด๋„ ํ•ด๋„ ํ—ท๊ฐˆ๋ฆฐ๋‹ค ๊ธˆ๋ถ•์–ด์ธ๊ฐ€๋ด„

์ •์ฒ˜๊ธฐ ํ•˜๋ฉด์„œ ๊ทธ๋ž˜๋„ ์™„๋ฒฝํ•˜๊ฒŒ ์ตํ˜”๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ๋˜ ๊ฐ€๋ฌผ๊ฐ€๋ฌผ..

๊ทธ๋ž˜์„œ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค

 

<ํ•ต์‹ฌ ๋‚ด์šฉ>

 

์ •์ฒ˜๊ธฐ ๋•Œ ํ•„๊ธฐํ•œ ๋‚ด์šฉ

 

<๊ตฌํ˜„ (by C)>

- ์œค์„ฑ์šฐ์˜ ์—ดํ˜ˆ ์ž๋ฃŒ๊ตฌ์กฐ ์ฐธ๊ณ 

- ๊ตฌํ˜„์ด ์‰ฌ์šด ์‚ฝ์ž…, ์„ ํƒ, ๋ฒ„๋ธ” ์ •๋ ฌ๋งŒ ์ •๋ฆฌํ–ˆ์Œ..

 

1. ์‚ฝ์ž… ์ •๋ ฌ - ์ •๋ ฌ์ด ์™„๋ฃŒ๋œ ์˜์—ญ๊ณผ ๊ทธ๋ ‡์ง€ ์•Š์€ ์˜์—ญ์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๋ฐฉ๋ฒ•

void InerSort(int arr[], int n)
{
    int i, j;
    int insData;
    
    for (i=1; i<n; i++)
    {
        insData = arr[i];	//์ •๋ ฌ ๋Œ€์ƒ ์ €์žฅ (๋งจ ์•ž ๋ฐ์ดํ„ฐ๋Š” ์ •๋ ฌ์ด ๋๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ๋‘๋ฒˆ์งธ ๋ฐ์ดํ„ฐ๋ถ€ํ„ฐ)
        
        for (j=i-1; j>=0; j--)
        {
            if (arr[j] > insData)
                arr[j+1] = arr[j];	//๋น„๊ต ๋Œ€์ƒ ๋’ค๋กœ ํ•œ ์นธ ๋ฐ€๊ธฐ
            else
                break;
        }
        
        arr[j+1] = insData;	//์ฐพ์€ ์œ„์น˜์— ์ •๋ ฌ ๋Œ€์ƒ ์‚ฝ์ž…
    }
}

 

2. ์„ ํƒ ์ •๋ ฌ - ํ•˜๋‚˜์”ฉ ์„ ํƒํ•ด์„œ ์ •๋ ฌ ๊ฒฐ๊ณผ๋ฅผ ์™„์„ฑ

๋ณ„๋„์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ์š”๊ตฌ๋œ๋‹ค๋Š” ๋‹จ์  -> ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ์„ ๋งจ ์•ž์œผ๋กœ ๋ณด๋‚ด๋ฉด์„œ ๊ฐœ์„  (ํ•˜๋‚˜์”ฉ ๋น„์›Œ๊ฐ€๋ฉด์„œ ์ด๋™์‹œํ‚ด)

void SelSort(int arr[], int n)
{
    int i, j;
    int maxIdx;
    int temp;
    
    for (i=0; i<n-1; i++)
    {
        maxIdx = i;
        
        for (j=i+1; j<n; j++)   //์ตœ์†Ÿ๊ฐ’ ํƒ์ƒ‰
        {
            if (arr[j] < arr[maxIdx])
                maxIdx = j;
        }   // for๋ฌธ - ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋ถ€๋ถ„
        
        // ๊ตํ™˜ //
        temp = arr[i];
        arr[i] = arr[maxIdx];
        arr[maxIdx] = temp;
    }
}

 

3. ๋ฒ„๋ธ” ์ •๋ ฌ - ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋ฅผ ๋งˆ์ง€๋ง‰์— ๋„ฃ์Œ

void BubbleSort(int arr[], int n)
{
    int i, j;
    int temp;
    
    for (i=0; i<n-1; i++)
    {
        for (j=0; j<(n-i)-1; j++)
        {
            if (arr[j] > arr[j+1])
            {
                // ๋ฐ์ดํ„ฐ์˜ ๊ตํ™˜ //
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
}