개념

삽입 정렬

개발참치 2021. 7. 7.

선택 정렬과 비슷하지만, 좀 더 효율적인 정렬 알고리즘입니다.

배열의 원소를 비교하여, 위치에 삽입하므로 삽입 정렬이라고 불리우며,

최선의 조건에 맞는다면 좋은 효율을 내는 알고리즘입니다.

 

특징

  • 제자리 정렬 (다른 메모리 공간이 필요하지 않음)
  • 안정 정렬
  • 배열의 한 원소 key를 가지고 있고, key를 알맞은 순서에 삽입
  • key보다 큰 값은 하나씩 밀어내고, key보다 작은 값은 뒤에 삽입
  • 입력 배열이 선정렬(완전하지 않아도)되어있는 경우 효율적인 정렬

시간 복잡도

  • 최악: O (n^2)
  • 최선: O (n)
  • 평균: O (n^2)
최선의 경우에는 좋지만, 대부분의 경우 비 효율적인 편입니다.

예시 그림

구현 코드 ( java )

void insertionSort(int A[], int size) {
	int i, j, key;
	for (int = 1; i < size; i++) {
		key = A[i];
		j = i - 1;
		while(A[j] > key && j >= 0) {
			A[j + 1] = A[j];
				j--;
		}
		A[j + 1] = key;
	}
}

'개념' 카테고리의 다른 글

BFS (너비 우선 탐색)  (0) 2021.07.29
DFS (깊이 우선 탐색)  (0) 2021.07.29
합병 정렬  (0) 2021.07.07
선택 정렬  (0) 2021.07.07
버블 정렬  (0) 2021.07.07

댓글