728x90
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | #include <stdio.h> #include <stdlib.h> int main() { int list[5] = {7,5,4,2,1}; //바깥쪽 for 문에 사용되는 i, 안쪽 for 문에 사용되는 j //배열 출력을 위해 사용되는 k //소팅 중 배열의 값 교환을 위해 사용되는 tmp int i = 0, j = 0, k = 0, tmp = 0; //배열의 길이 len int len = 5; //버블 소팅 시작 for (i = 0; i < len - 1; i++) { // for (j = 0; j < len - i - 1; j++) { //바깥쪽 for 문의 i값에 따라 안쪽 for 문의 반복 횟수가 줄어든다. //바깥쪽 for 문의 경우 배열의 길이만큼 반복하게되고 //안쪽 for 문의 경우에 바깥쪽 for 문의 각 단계마다(오름차순의 경우) 최대값이 맨 뒤로 이동하게되고 //최대값이 맨 뒤에 존재하므로, 배열의 맨 뒷부분은 다음 단계에서 정렬에 포함되지 않는다. //각 단계마다 j의 값에 따라 배열의 j번째 값과 j+1번째 값을 비교 //만약 j번째 값이 j+1번째 값이 더 크다면 (오름차순 정렬의 경우) 큰 수가 뒤로 가야하므로 배열의 값 교환 if ( list[j] > list[j+1] ) { tmp = list[j]; list[j] = list[j+1]; list[j+1] = tmp; } for (k = 0; k < len; k++) { printf("%d ", list[k]); } printf("\n"); } } // n n-1 n-2 n-3 // 4 3 2 1 // bigO( n * (n-1) / 2 ) = bigO( (n^2 - n) / 2 ) = bigO(N^2) printf("\n"); for (i = 0; i < len; i++) { printf("%d ", list[i]); } printf("\n"); return 0; } | cs |
728x90
'알고리즘' 카테고리의 다른 글
백준 10989 수 정렬하기3 ( 파이썬 / 파이썬3 / pypy3 ) (0) | 2021.01.28 |
---|---|
삽입 정렬(insertion sort) - c 언어 코드(code) (0) | 2019.08.16 |
선택 정렬(selection sort) - c 언어 코드(code) (0) | 2019.08.16 |
정렬 알고리즘(sorting algorithm) - 삽입 정렬(insertion sort) (0) | 2019.08.10 |
정렬 알고리즘(sorting algorithm) - 버블 정렬(bubble sort) (0) | 2019.08.10 |