문제 출처: www.acmicpc.net/problem/2750
1. 코드
#include <stdio.h> #include <stdlib.h> int main(void) { int * arr; int len, temp, i, j; scanf("%d", &len); arr = (int*) calloc(len, sizeof(int)); for(i = 0; i < len; i++) scanf("%d", &arr[i]); for (i = len - 1; i > 0; i--) { for (j = 0; j < i; j++) { if (arr[j] > arr[j + 1]) { temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } for(i = 0; i < len; i++) printf("%d\n", arr[i]); free(arr); return 0; }
2. 문제 해결 방식
버블 정렬은 아래와 같이 실행된다.
순번 | i의 값 | j의 값 | 첫 번째 요소 | 두 번째 요소 | 세 번째 요소 | 네 번째 요소 | 다섯 번째 요소 |
1 | 0 | 0 | 5 | 4 | 3 | 2 | 1 |
2 | 4 | 0 | 4 | 5 | 3 | 2 | 1 |
3 | 4 | 1 | 4 | 3 | 5 | 2 | 1 |
4 | 4 | 2 | 4 | 3 | 2 | 5 | 1 |
5 | 4 | 3 | 4 | 3 | 2 | 1 | 5 |
6 | 3 | 0 | 3 | 4 | 2 | 1 | 5 |
7 | 3 | 1 | 3 | 2 | 4 | 1 | 5 |
8 | 3 | 2 | 3 | 2 | 1 | 4 | 5 |
9 | 2 | 0 | 2 | 3 | 1 | 4 | 5 |
10 | 2 | 1 | 2 | 1 | 3 | 4 | 5 |
11 | 1 | 0 | 1 | 2 | 3 | 4 | 5 |
'컴퓨터 > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 10172번: 개 [C++] (0) | 2020.11.14 |
---|---|
백준 알고리즘 2751번: 수 정렬하기 2 C언어 합병 정렬(merge sort) (0) | 2020.05.31 |
백준 알고리즘 2750번: 수 정렬하기 C언어 (0) | 2020.05.21 |
백준 알고리즘 1001번 : A-B Java[자바] (0) | 2020.05.04 |
백준 알고리즘 7568번: 덩치 C언어 (0) | 2020.05.02 |