๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“š๊ณต๋ถ€/์•Œ๊ณ ๋ฆฌ์ฆ˜

์ •๋ ฌ - ๋ฒ„๋ธ” ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜

by Janger 2022. 7. 1.
728x90
๋ฐ˜์‘ํ˜•

 

 

https://www.programiz.com/c-programming/online-compiler/

 

Online C Compiler

 

www.programiz.com

 

 

๋ฒ„๋ธ” ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€?
  • ์„œ๋กœ ์ธ์ ‘ํ•œ ๋‘ ์›์†Œ๋ผ๋ฆฌ ๋น„๊ต๋ฅผ ํ•˜๋ฉด์„œ ์ •๋ ฌ์„ ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. 
  • 2๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ์™€ ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•˜๋ฉด์„œ ์–ด๋Š ํ•œ์ชฝ์ด ๋” ์ž‘์€ ๊ฒฝ์šฐ ํฐ ๊ฐ’๊ณผ ์„œ๋กœ ๊ตํ™˜(Swap)์„ ํ•œ๋‹ค. 

 

 

๋ฒ„๋ธ” ์ •๋ ฌ ๋™์ž‘ ๊ณผ์ • ์ง์ ‘ ๋ˆˆ์œผ๋กœ ํ™•์ธํ•˜๊ธฐ

https://commons.wikimedia.org/wiki/File:Bubble-sort-example-300px.gif

๋ณด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์‚ฌ์ดํด(ํšŒ์ „)์ด ์‹œ์ž‘๋˜๋ฉด

1. ๋งจ ์•ž์˜ ๋‘๊ฐœ์˜ ์š”์†Œ๋ผ๋ฆฌ ์„œ๋กœ ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•ด์„œ ๋” ์ž‘์€ ๊ฐ’์„ ์™ผ์ชฝ์œผ๋กœ ์ด๋™(๊ตํ™˜) ์‹œํ‚ด.

2. ๊ทธ ๋‹ค์Œ ๋นจ๊ฐ„ ๋ฐ•์Šค๋ฅผ +1 ์ฆ๊ฐ€ ์‹œ์ผœ์„œ ๋ฐฉ๊ธˆ ๋น„๊ตํ•œ ํฐ ๊ฐ’๊ณผ ๋ฐ”๋กœ ์˜†์˜ ์š”์†Œ์™€ ๋˜ ๋น„๊ตํ›„ ์Šค์™‘

 

 

๊ทธ๋Ÿฌ๋ฉด ์ตœ์ข…์ ์œผ๋กœ ๊ฐ’์ด ๊ฐ€์žฅ ํฐ 8์ด ๋ฐฐ์—ด์˜ ๋งจ ๋์ชฝ์— ์œ„์น˜ํ•˜๊ฒŒ ๋œ๋‹ค. 

 

์—ฌ๊ธฐ๊นŒ์ง€๊ฐ€ ๋ฐ”๋กœ 1ํšŒ์ „์ด๊ณ  ์ด๋Ÿฐ ํšŒ์ „์„ ๋ฐ˜๋ณตํ•œ๋‹ค. 

 

์ฃผ์˜์‚ฌํ•ญ

์ด๋ฏธ ๋ฆฌ์ŠคํŠธ์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’์ธ 8์ด ๋งจ ์˜ค๋ฅธ์ชฝ์— ์œ„์น˜ํ•ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋˜ ๋‹ค์‹œ ๋นจ๊ฐ„ ๋ฐ•์Šค๋ฅผ ๊ตณ์ด ๋งจ ๋๊นŒ์ง€ ๊ฐ€์„œ 8๊ณผ ๋น„๊ตํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋” ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ

ํ•œ ์‚ฌ์ดํด์ด ๋๋‚  ๋•Œ๋งˆ๋‹ค ๋น„๊ตํ•˜๋Š” ํšŸ์ˆ˜๊ฐ€ N-1์”ฉ ์ค„์–ด๋“ค๊ฒŒ ํ•ด์ฃผ๋Š”๊ฒŒ ์ค‘์š”ํ•˜๋‹ค.

 

5 3 1 6 7 2 4 8

3 1 5 6 2 4 7 8

1 3 5 2 4 6 7 8

...

1 2 3 4 5 6 7 8

 

์ € ๋นจ๊ฐ„ ์ˆซ์ž๋“ค์€ ๋”์ด์ƒ ๋น„๊ตํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. 

 

 

#include <stdio.h>

#define SWAP(a,b){int t; t=a; a=b; b=t;}

int main() {
    int numbers[] = { 9, 2, 5, 6, 8, 1, 4, 7, 3 };
    
    for(int i=sizeof( numbers )/4; i>0; i--){
    
        for( int j=0; j<i; j++ ){
            
            if( numbers[j] > numbers[j+1] ){
                printf("numbers[j]: %d | numbers[j+1]: %d\n", numbers[j], numbers[j+1]);
                SWAP( numbers[j], numbers[j+1]);
            }
            
        }
        
        printf("\n");
        
    }
    
    printf("๊ฒฐ๊ณผ: ");
    // ๋ชจ๋‘ ์ถœ๋ ฅ
    for(int i=0; i<sizeof( numbers )/4; i++){
        printf("%d ", numbers[i]);
    }
    
    return 0;
}

 

[์ถœ๋ ฅ]

numbers[j]: 9 | numbers[j+1]: 2
numbers[j]: 9 | numbers[j+1]: 5
numbers[j]: 9 | numbers[j+1]: 6
numbers[j]: 9 | numbers[j+1]: 8
numbers[j]: 9 | numbers[j+1]: 1
numbers[j]: 9 | numbers[j+1]: 4
numbers[j]: 9 | numbers[j+1]: 7
numbers[j]: 9 | numbers[j+1]: 3

numbers[j]: 8 | numbers[j+1]: 1
numbers[j]: 8 | numbers[j+1]: 4
numbers[j]: 8 | numbers[j+1]: 7
numbers[j]: 8 | numbers[j+1]: 3

numbers[j]: 6 | numbers[j+1]: 1
numbers[j]: 6 | numbers[j+1]: 4
numbers[j]: 7 | numbers[j+1]: 3

numbers[j]: 5 | numbers[j+1]: 1
numbers[j]: 5 | numbers[j+1]: 4
numbers[j]: 6 | numbers[j+1]: 3

numbers[j]: 2 | numbers[j+1]: 1
numbers[j]: 5 | numbers[j+1]: 3

numbers[j]: 4 | numbers[j+1]: 3




๊ฒฐ๊ณผ: 1 2 3 4 5 6 7 8 9

 

์†Œ์†Œํ•˜๋ฉด์„œ ์“ธ๋งŒํ•œ ํŒ

์œ„์˜ ์†Œ์Šค์ฒ˜๋Ÿผ 

C์–ธ์—์„œ ๊ฐ„๋‹จํžˆ SWAP ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜์˜ ๋งคํฌ๋กœ ํ•จ์ˆ˜๋ฅผ ์ฝ”๋“œ์˜ ์ƒ๋‹จ์— ์ ์–ด์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค. 

#define SWAP(a,b){int t; t=a; a=b; b=t;}

 

๋˜ํ•œ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์•Œ์•„๋‚ด๊ณ  ์‹ถ์œผ๋ฉด sizeof ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์œ ์šฉํ•˜๋‹ค. 

sizeof(arr) / 4
ํ˜น์€
sizeof(arr) / sizeof(int)

sizeof๋Š” ๋ณ€์ˆ˜์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ๊ฐ€์ ธ์™€์ฃผ๋Š” ํ•จ์ˆ˜์ด๋ฉฐ, ๋ฐฐ์—ด์•ˆ์˜ ๋ณ€์ˆ˜ ๊ฐœ์ˆ˜ x ํƒ€์ž…์˜ ์‚ฌ์ด์ฆˆ๋กœ ์ถœ๋ ฅ์ด ๋œ๋‹ค. 

์—ฌ๊ธฐ์„œ๋Š” ํƒ€์ž…์˜ ์‚ฌ์ด์ฆˆ๋Š” ํ•„์š”๊ฐ€ ์—†์œผ๋‹ˆ / sizeof(ํƒ€์ž…)์„ ์ ์–ด์ค€ ๊ฒƒ์ด๋‹ค. 

 

728x90
๋ฐ˜์‘ํ˜•