WEBn/Algorithm Study

[C] 숫자 오름차순 만들기

Pastel Whale 2021. 8. 4. 00:32
#include <stdio.h>

int main() {
    int a[] = {95, 75, 85, 100, 50};
    int i, j, temp;
    int n = sizeof(a)/sizeof(int);
    
    for(i= 0; i<n-1 ;i++){
        for(j=0; j<4-i; j++){
            if( a[j] > a[j+1]){
                temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
            }
        }
    }
    
    for(i=0; i<5; i++){
        printf("%d", a[i]);
    }
    return 0;
    
}

 

출력값

더보기

50 75 85 95 100

 

▨해설

n의 값

sizeof자료형(타입)의 크기를 바이트(byte) 단위로 구하는 연산자이다.

sizeof(int) // 4

sizeof 표현식 형식으로 자료형의 크기를 구할 수 있다. 표현식은 변수, 상수, 배열 등 요소를 뜻한다.

sizeof(a) // 배열 요소가 5개 이고, 숫자이므로 5 x 4 = 20n = 20/4 = 5

 

for문의 결과

i는 n-1인 4보다 작은 0, 1, 2, 3을 반복한다.j는 i가 0일 때 4번, 1일 때 3번, 2일 때 2번, 3일 때 1번 반복한다. 

 

 if( a[j] > a[j+1]){
                temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
            }

j=0 일 때,

 

a[0] > a[1] // 95 > 75 = true

  temp = 95

  a[0] = a[1] = 75

  a[1] = temp = 95

∴ a[0] = 75, a[1] = 95

a[0]와 a[1]의 위치가 바뀌었다.

 

즉. a의 연달아 있는 두 요소를 비교했을 때 앞에 요소가 더 크다면, 순서를 바꿔준다. 

그래서 i=0의 for문을 돌리면 a=[ 75 85 95 50 100 ]가 된다.

i = 1 일 때 a = [ 75 85 50 95 100 ]

i = 2 일 때 a = [ 75 50 85 95 100 ]

i = 3 일 때 a = [ 50 75 85 95 100 ]

이 되어, 배열 a의 요소들이 숫자의 크기대로 오름차순이 된다.

 

printf( "%d" , a[i] )를 출력하면 새로 바뀐 배열 a인 50 75 85 95 100이 나온다.