2024. 3. 18. 22:43ㆍ복습/알고리즘
삽입 정렬은 바닥에 쌓인 책을 책꽂이에 정리하는 것과 같은 알고리즘이라
생각하면 편하다.
다음 그림을 살펴보자.
책꽂이에 책이 한 권 꽂혀있고,
우리는 바닥에 쌓인 책도 올바른 자리에 꽂아두어야 한다.
이 때, 우리는 책을 시리즈 순서대로 꽂아놔야한다.
물론, 1권부터 뽑아서 다시 꽂을 수도 있겠지만,
책이 쌓여있으니 맨 위에 쌓인 책부터 알맞은 자리에 꽂아두기로 하자.
맨 위의 7권은 5권 뒤에 와야한다. (이미 꽂혀있는 5와 비교, 비교횟수 : 1)
3권은 제일 왼쪽에 꽂아야한다.
어렵게 생각할 필요 없다. 이건 책꽂이니까..
아래 사진처럼 5권과 7권을 조금 밀고 3권을 맨 왼쪽에 꽂으면 된다.
(이미 꽂혀있는 5, 7과 비교, 비교횟수 : 2)
이런 식으로!
이제 다음은 9권인데, 9권은 7권 뒤에 꽂아주고
(이미 꽂혀있는 5, 7, 9와 비교, 비교횟수 : 3)
1권은 맨 앞에 꽂아준다.
(이미 꽂혀있는 5, 7, 9, 3과 비교, 비교횟수 : 4)
4권도 알맞은 위치에 꽂아넣으면 책은 순서대로 정렬되었고..
(이미 꽂혀있는 5, 7, 9, 3, 1과 비교, 비교횟수 : 5)
이게 삽입 정렬이다.
정렬 중간 과정은 [ 책꽂이에 꽂힌 순서 , 바닥에 놓인 순서] 이렇게 적으면 되는데,
중간 과정을 하나 가져와서 설명하자면,
다음 사진은 [3, 5, 7, 9, 1, 4] 상태인 것이다.
마지막으로, 과정을 숫자로만 살펴보겠다.
빨간 부분은 아직 정렬되지 않은 상태 (바닥에 쌓인 책)
파란 부분은 정렬된 상태이다. (책꽂이에 꽂힌 책)
책꽂이를 떠올린다면, 쉽게 할 수 있을 것이다.
다음엔 이를 C언어 코드로 구현해보도록 하겠다 :)
'복습 > 알고리즘' 카테고리의 다른 글
[알고리즘] 선택 정렬 C언어 구현하기! (0) | 2024.04.09 |
---|---|
[알고리즘] 병합 정렬 (merge sort) 쉽게 이해하기! (0) | 2024.04.09 |
[알고리즘] 퀵 정렬(quick sort) 쉽게 이해하기! (0) | 2024.04.08 |
[알고리즘] 버블 정렬(bubble sort) 쉽게 이해하기! (0) | 2024.04.08 |
[알고리즘] 선택 정렬(selection sort) 쉽게 이해하기! (0) | 2024.03.12 |