컴퓨터/백준 알고리즘
백준 알고리즘 2750번: 수 정렬하기 C언어(버블 정렬)
이상한 나그네
2020. 5. 23. 15:55
문제 출처: 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 |