insertion-sort
Algorithms
참고문헌
삽입정렬이란
- 과정
- (오름차순 정렬) 두번째 요소부터 잡아서 아래의 과정을 반복한다
- 바로앞 요소와 비교한다. 만약 지금 잡은 요소가 더 작다면 위치를 기억한다 (앞의 요소는 인덱스+1, 잡은 요소는 인덱스-1)
- 이런식으로 앞에 있는 요소들을 차례로 비교해가면서 더 작은 요소가 없을 때까지 반복한다.
- 기억해놓은 인덱스를 토대로, 요소들을 이동시킨다.
- (오름차순 정렬) 두번째 요소부터 잡아서 아래의 과정을 반복한다
- 특징
- 장점
- 대부분의 요소들이 이미 정렬되어 있는 경우에 매우 효율적이다(최선의 경우).
- 단점
- 비교적 요소 이동이 많다.
- 요소의 수가 많고, 요소의 크기가 클 경우 적합하지 않다.
- 장점
- 시간복잡도
- 최선의 경우 : 이미 정렬되어 있는 경우
- 비교작업
- 각 요소마다 바로 앞의 하나의 요소와 비교하고 끝난다
- 총 비교횟수 : n-1
- 교체작업
- 교체가 일어나지 않는다.
- 시간복잡도 : O(n-1) = O(n)
- 비교작업
- 최악의 경우 : 역순으로 정렬되어 있는 경우
- 비교작업
- 각 요소마다 그 앞의 모든 요소와 비교를 해야 하므로, i번째 요소는 i-1번 비교를 해야 한다
- 1 + 2 + … + n-1
- 총 비교횟수 = n(n-1)/2
- 교체작업
- 각 요소마다, 앞의 요소들을 하나씩 밀고 해당 요소는 맨앞에 놓아야 하기 때문에, i번째 요소의 경우 i만큼의 교체가 이루어진다
- 2 + 3 + … n
- 총 교체횟수 : n(n-1)/2 + n -1
- 시간복잡도 : O(n^2) * 2 = O(n^2)
- 비교작업
- 최선의 경우 : 이미 정렬되어 있는 경우
- 요약
- 삽입정렬은 정렬이 어느정도 된 데이터의 경우 효과적이다.