Udemy - 삽입 정렬
삽입 정렬이란?
삽입 정렬 또한 가장 초급 수준의 정렬 알고리즘이다.
버블정렬, 선택정렬과 맥락이 비슷하지만, 그래도 이 셋중에는 가장 활용도가 높고 상대적으로 효율적인 정렬 알고리즘이라고 할 수 있다.
위의 예시에서 보이는 바와 같이, 계속 한 칸 옆의 배열을 그 앞의 배열들과 비교하여 중간에 삽입할 곳을 찾는다.
즉, 기준점 포인터를 기준으로 순회 포인터 i
를 통해 계속 우측으로 이동하며 검색한다. j가 다음 대상으로 이동했을 때, 0~i
의 수들을 i--
하며 계속 숫자를 i
와 비교하고, 좌측 값이 i
값보다 작거나 같으면 그 값의 오른쪽에 삽입시키면 된다.
삽입 정렬 기본 예제
주어진 배열들을 오름차순으로 삽입 정렬하는 알고리즘을 작성하시오.
1 | function insertion(arr) { |
삽입 정렬 시간 복잡도
보통의 경우는 $O(n^2)$의 시간복잡도를 갖는다.
하지만, 정렬이 잘 되어있는 경우에는 더 효율적으로 정렬이 수행될 수 있다.
⇒ 완전히 역순으로 정렬된 배열의 경우 최악의 시간복잡도를 보일 수 있다….!
이 링크를 참고해보면 각 정렬 알고리즘별 시간복잡도 및 효율성을 한 눈에 쉽게 확인해볼 수 있다.
Sorting Algorithms Animations