코딩일기/자격증

[정보처리기사] [ C ] 버블 정렬 코드 | 2020년 정보처리기사 기출문제

jhy_2023 2024. 9. 6. 17:00
728x90
반응형

문제

다음은 C언어 소스 코드이다. 출력 결과를 쓰시오.

 #include <stdio.h>
 void main(){
 	int i,j;
    int temp;
    int a[5] = {75,95,85,100,50};
    
    for(i=0; i<4; 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]);
        }
  }

정답

50 75 85 95 100

반응형

코드 설명: 버블 정렬 구현

C 언어로 작성된 버블 정렬(Bubble Sort) 알고리즘을 구현한 코드입니다. 이 코드는 정수 배열을 오름차순으로 정렬합니다.

#include <stdio.h>  // 표준 입출력 라이브러리를 포함합니다.

void main() {
    int i, j;  // 루프 변수 i와 j를 선언합니다.
    int temp;  // 배열 요소를 교환하기 위한 임시 변수를 선언합니다.
    int a[5] = {75, 95, 85, 100, 50};  // 정렬할 정수 배열을 초기화합니다.

    // 버블 정렬 알고리즘
    for (i = 0; i < 4; i++) {  // 배열의 크기-1만큼 반복합니다.
        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]);  // 배열의 각 요소를 출력합니다.
    }
}

코드 설명: 상세 코드 설명

1. 변수 선언

int i, j;
int temp;
int a[5] = {75, 95, 85, 100, 50};

i와 j는 반복문에서 사용할 루프 변수입니다. temp는 배열 요소를 교환할 때 사용할 임시 변수입니다. a는 정렬할 정수 배열입니다.

2. 버블 정렬 알고리즘

for (i = 0; i < 4; 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;
        }
    }
}

 

  • 버블 정렬(Bubble Sort)은 간단한 정렬 알고리즘 중 하나로, 배열의 요소들을 비교하고 교환하여 정렬하는 방법입니다. 이 알고리즘은 배열을 여러 번 순회하면서 인접한 두 요소를 비교하고, 필요에 따라 교환하여 배열을 정렬합니다. 버블 정렬은 정렬 과정에서 큰 값이 배열의 끝으로 "버블"처럼 떠오르는 모습에서 이름이 유래되었습니다.

  • i: 외부 루프의 인덱스입니다. 각 패스에서 배열의 크기-1만큼 반복합니다.
  • j: 내부 루프의 인덱스입니다. 현재 비교하는 두 요소의 인덱스를 나타냅니다.
  • 비교: 현재 j와 j+1 위치의 두 요소를 비교합니다.
  • 교환: 비교 결과, 두 요소의 순서가 바뀌어야 할 경우 수행됩니다.
  • 배열 상태: 각 단계 후의 배열 상태를 보여줍니다.

 

728x90

2. 정렬된 배열 출력

for (i = 0; i < 5; i++) {
    printf("%d ", a[i]);
}

정렬된 배열의 각 요소를 공백으로 구분하여 출력합니다. 
배열 a의 최종 상태는 [50, 75, 85, 95, 100]이므로, 이 코드 라인은 다음과 같은 출력을 생성합니다: 50 75 85 95 100


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

728x90
반응형