record logo record

삽입 정렬(Insertion Sort) 이란?

삽입 정렬(Insertion Sort) 알고리즘의 특징

삽입 정렬(Insertion Sort)의 알고리즘 예시

Source Code

#include <stdio.h>

int testcase = 5;

int main(){
	
	// case 1 
	// int num[10] = {1, 10, 5, 8, 7, 6, 4, 3, 2, 9};
	// case 2
	int num[testcase] = {4, 1, 5, 2, 3};
	// case 3 (Best Case) 
	// int num[10] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 1};
	
	int i, j, r, tmp;
	printf("***초기값***\nnum[0~4] : ");
	for(r = 0; r < testcase; r++){
		printf("%d ",num[r]);
	}
	printf("\n");
	for(i=0; i< testcase-1 ; i++){
		j = i;
		while(num[j] > num[j+1]){
			printf("[%d] 이동 num[%d]->num[%d] : ",num[j+1],j+1,j);
			tmp = num[j];
			num[j] = num[j+1];
			num[j+1] = tmp;
			j--;
			for(r = 0; r< testcase; r++){
				printf("%d ",num[r]);
			}
			printf("\n");
		}
	}	
	return 0;
}

삽입 정렬(Insertion Sort)의 시간복잡도

  • 삽입 정렬의 시간 복잡도는 O(N^2) 입니다.
  • But, Best Case의 경우 시간 복잡도는 O(N) 입니다.

정렬 알고리즘 시간복잡도 비교

관련된 Post

References