프로그래밍/C

삽입 정렬 C언어 코드

swedu 2023. 2. 16. 09:00
728x90
반응형

2023.02.16  최초작성

 

 

#include <stdio.h>
void main() {
	int arr[10] = { 4,19,31,7,21,35,37,22,2,5 };
	int size = sizeof(arr) / sizeof(int);
	int key;
	puts("정렬 전 --------");
	for (int i = 0; i < size; i++) {
		printf("%d ", arr[i]);
	}
	printf("\n");
	for (int i = 1; i < size; i++) {
		key = arr[i];
		printf("i : %d, key : %d\n", i, key);
		for (int j = i - 1; j >= 0; j--) {
			printf("key < arr[%d]:%d비교 -- ", j, arr[j]);
			if (key < arr[j]) {
				arr[j + 1] = arr[j];
				if (j == 0) arr[j] = key;
			}
			else {
				arr[j + 1] = key;
				printf("arr[%d] 번지에 key: %d 대입\n", j + 1, key);
				break;
			}
			for (int k = 0; k < size; k++) {
				printf("%d ", arr[k]);
			}
			printf("\n");
		}
		printf("\n%d번째 싸이클 후 결과 : ", i);
		for (int k = 0; k < size; k++) {
			printf("%d ", arr[k]);
		}
		printf("\n\n");
	}
	puts("정렬 후 --------");
	for (int i = 0; i < size; i++) {
		printf("%d ", arr[i]);
	}
	printf("\n");
}

[실행 결과]

정렬 전 --------
4 19 31 7 21 35 37 22 2 5
i : 1, key : 19
key < arr[0]:4비교 -- arr[1] 번지에 key: 19 대입

1번째 싸이클 후 결과 : 4 19 31 7 21 35 37 22 2 5

i : 2, key : 31
key < arr[1]:19비교 -- arr[2] 번지에 key: 31 대입

2번째 싸이클 후 결과 : 4 19 31 7 21 35 37 22 2 5

i : 3, key : 7
key < arr[2]:31비교 -- 4 19 31 31 21 35 37 22 2 5
key < arr[1]:19비교 -- 4 19 19 31 21 35 37 22 2 5
key < arr[0]:4비교 -- arr[1] 번지에 key: 7 대입

3번째 싸이클 후 결과 : 4 7 19 31 21 35 37 22 2 5

i : 4, key : 21
key < arr[3]:31비교 -- 4 7 19 31 31 35 37 22 2 5
key < arr[2]:19비교 -- arr[3] 번지에 key: 21 대입

4번째 싸이클 후 결과 : 4 7 19 21 31 35 37 22 2 5

i : 5, key : 35
key < arr[4]:31비교 -- arr[5] 번지에 key: 35 대입

5번째 싸이클 후 결과 : 4 7 19 21 31 35 37 22 2 5

i : 6, key : 37
key < arr[5]:35비교 -- arr[6] 번지에 key: 37 대입

6번째 싸이클 후 결과 : 4 7 19 21 31 35 37 22 2 5

i : 7, key : 22
key < arr[6]:37비교 -- 4 7 19 21 31 35 37 37 2 5
key < arr[5]:35비교 -- 4 7 19 21 31 35 35 37 2 5
key < arr[4]:31비교 -- 4 7 19 21 31 31 35 37 2 5
key < arr[3]:21비교 -- arr[4] 번지에 key: 22 대입

7번째 싸이클 후 결과 : 4 7 19 21 22 31 35 37 2 5

i : 8, key : 2
key < arr[7]:37비교 -- 4 7 19 21 22 31 35 37 37 5
key < arr[6]:35비교 -- 4 7 19 21 22 31 35 35 37 5
key < arr[5]:31비교 -- 4 7 19 21 22 31 31 35 37 5
key < arr[4]:22비교 -- 4 7 19 21 22 22 31 35 37 5
key < arr[3]:21비교 -- 4 7 19 21 21 22 31 35 37 5
key < arr[2]:19비교 -- 4 7 19 19 21 22 31 35 37 5
key < arr[1]:7비교 -- 4 7 7 19 21 22 31 35 37 5
key < arr[0]:4비교 -- 2 4 7 19 21 22 31 35 37 5

8번째 싸이클 후 결과 : 2 4 7 19 21 22 31 35 37 5

i : 9, key : 5
key < arr[8]:37비교 -- 2 4 7 19 21 22 31 35 37 37
key < arr[7]:35비교 -- 2 4 7 19 21 22 31 35 35 37
key < arr[6]:31비교 -- 2 4 7 19 21 22 31 31 35 37
key < arr[5]:22비교 -- 2 4 7 19 21 22 22 31 35 37
key < arr[4]:21비교 -- 2 4 7 19 21 21 22 31 35 37
key < arr[3]:19비교 -- 2 4 7 19 19 21 22 31 35 37
key < arr[2]:7비교 -- 2 4 7 7 19 21 22 31 35 37
key < arr[1]:4비교 -- arr[2] 번지에 key: 5 대입

9번째 싸이클 후 결과 : 2 4 5 7 19 21 22 31 35 37

정렬 후 --------
2 4 5 7 19 21 22 31 35 37

 

728x90
반응형

 

728x90
반응형

'프로그래밍 > C' 카테고리의 다른 글

선택 정렬 C언어 코드  (0) 2023.02.16
병합 정렬 C언어 코드  (0) 2023.02.16
배열과 포인터  (0) 2023.02.15
C언어 동적할당 malloc, calloc, realloc, free  (0) 2023.01.20
C언어 구조체 포인터  (0) 2023.01.19