50.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]을 바꿔주면 됩니다.