삽입 정렬

이찬혁·2024년 1월 2일

알고리즘

목록 보기
8/72

정렬 알고리즘의 종류

정렬 알고리즘정의
버블(bubble)데이터의 인접 요소끼리 비교하고, swap 연산을 수행하며 정렬하는 방식
선택(selection)대상에서 가장 크거나 작은 데이터를 찾아가 선택을 반복하면서 정렬하는 방식
삽입(insertion)대상을 선택해 정렬된 영역에서 선택 데이터의 적절한 위치를 찾아 삽입하면서 정렬하는 방식
퀵(quick)pivot 값을 선정해 해당 값을 기준으로 정렬하는 방식
병합(merge)이미 정렬된 부분 집합들을 효율적으로 병합해 전체를 정렬하는 방식
기수(radix)데이터의 자릿수를 바탕으로 비교해 데이터를 정렬하는 방식

삽입 정렬 알고리즘 또한 버블 정렬과 같은 높은 시간 복잡도(O(n^2))를 가지고 있고 구현하기도 쉬운 편이다

정렬 과정

삽입 정렬 알고리즘의 정렬 과정은 아래와 같다.

  1. 현재 인덱스에 있는 데이터 값을 선택
  2. 현재 선택한 데이터가 정렬된 데이터 범위에 삽입될 위치를 탐색
  3. 삽입 위치부터 인덱스에 있는 위치까지 shift 연산을 수행한다
  4. 삽입 위치에 현재 선택한 데이터를 삽입하고 index++ 연산을 수행한다.
  5. 전체 데이터의 크기만큼 index가 커질 때까지, 즉 선택할 데이터가 없을 때까지 반복한다.

Key Point

  1. 삽입 정렬의 핵심은 현재 정렬된 데이터 범위 내에서 적절한 위치에 삽입하는 것!
  2. 삽입 위치를 탐색하는 부분에서 이진 탐색등과 같은 탐색 알고리즘을 사용하면 시간 복잡도를 줄일 수 있다.(탐색하는 부분은 정렬이 되어있기 때문에 탐색 알고리즘 사용가능) -> 하지만 shift 연산 과정에서 부하가 있기 때문에 퀵 정렬 또는 병합 정렬을 사용하자!!
profile
나의 개발로그

0개의 댓글