ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C] 숫자 오름차순 만들기
    WEBn/Algorithm Study 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이 나온다.

     

     

     

    댓글

Designed by Tistory.