73.4 연습문제: 거품 정렬 구현하기

다음 소스 코드를 완성하여 배열의 값을 내림차순으로 정렬하세요.

practice_bubble_sort.c

#include <stdio.h>

void bubble_sort(int arr[], int count)
{
    int temp;

    for (int i = 0; i < count; i++)
    {
        for (int j = 0; j < count - 1; j++)
        {
            __________________________________
            ...
            __________________________________
        }
    }
}

int main()
{
    int numArr[10] = { 8, 4, 2, 5, 3, 7, 10, 1, 6, 9 };
 
    bubble_sort(numArr, sizeof(numArr) / sizeof(int));

    for (int i = 0; i < 10; i++)
    {
        printf("%d ", numArr[i]);
    }

    printf("\n");

    return 0;
}

실행 결과

10 9 8 7 6 5 4 3 2 1

정답

if (arr[j] < arr[j + 1])
{
    temp = arr[j];
    arr[j] = arr[j + 1];
    arr[j + 1] = temp;
}

해설

거품 정렬로 내림차순 정렬을 하려면 현재 값과 다음 값을 비교하여 작은 값을 다음 요소로 보내면 됩니다. 따라서 if (arr[j] < arr[j + 1])와 같이 비교하여 현재 값 arr[j]가 작다면 arr[j]와 다음의 값 arr[j + 1]을 바꿔주면 됩니다.