Insertion Sort란?
삽입 정렬이란 선택한 요소에 알맞은 위치에 삽입하는 작업을 반복하여 정렬하는 알고리즘이다.
자료 배열의 모든 요소를 앞에서부터 차례대로 선택하고
이미 정렬된 배열 부분과 비교 후 알맞은 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘이다.
동작 방식
Key값을 정렬된 배열 부분과 비교하여 알맞은 위치에 삽입.
삽입 전, x는 정렬되지 않은 부분의 첫 번째 요소로 선택된 키 값이다.
삽입 후, 삽입 된 부분에서 x거 들어갈 알맞은 위치에 삽입하게 된다.
정렬되지 않은 항목 중 첫 번째 항목이 다음 key 값으로 지정된다.
특징
- 장점
- 간단한 구현
- 같은 값 사이에는 상대적 위치 변화가 없음
- Stable한 정렬임
- 주어진 자료공간 이외의 공간을 사용하지 않음
- 단점
- 입력 데이터 배열의 길이가 길어질수록 비효율적
- 역으로 정렬되어 있는 입력 값에 대해서 최악의 성능을 보임 (모든 입력값에 대해 삽입이 필요)
시간복잡도
T(n) = c1n + c2(n-1) + c4(n-1) + c5(n(n+1)/2-1) + c6(n(n-1)/2) + c7(n(n-1)/2) + c8(n-1)
T(n) = O(n^2)
예제 코드
1 | import java.util.Scanner; |
Insertion Sort란?
You need to set
install_url
to use ShareThis. Please set it in _config.yml
.