알고리즘 - 삽입정렬) 복습을 위해 작성하는 글 2023-04-09

rizz·2023년 4월 9일
0

알고리즘

목록 보기
5/15

📒 갈무리 - 삽입정렬(Insertion Sort)

📌 삽입정렬이란?

- 앞의 숫자가 현재 숫자보다 큰지 비교하며 자신의 위치에 삽입되는 정렬 방법

- 앞의 값과 비교를 하기 때문에 전체 배열 중 0번 인덱스가 아닌 1번 인덱스부터 앞의 값과 비교

- 정렬된 부분과 정렬되지 않은 부분을 나누어서 정렬되지 않은 데이터들을 정렬된 데이터와 비교해서 정렬하는 방식

- 앞에 비교한 데이터들은 이미 정렬된 데이터라고 간주한다.

 

📌 직접 구현해 보자...

// C#
        public void InsertionSort(int[] data)
        {

            for (int i = 1; i < data.Length; i++)
            {
                for (int j = i; j > 0; j--)
                {
                    if (data[j - 1] > data[j])
                    {
                        Swap(ref data[j - 1], ref data[j]);
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }

        public void Swap(ref int number1, ref int number2)
        {
            int temp = number1;
            number1 = number2;
            number2 = temp;
        }
        // 가독성을 위해 각 기능마다 함수로 분리하면 좋지만, 지금은 편의상 간단하게 구현함

 

📌 삽입정렬의 특징

- 선택정렬이나 거품정렬과 같은 O(n²)의 시간 복잡도를 갖는다.

- 비교할 데이터가 많은 경우에 효율이 좋지 않다.

ex) 내림차순으로 정렬되어 있는 데이터를 오름차순으로 바꾸어야 할 때

- 거의 정렬이 완료된 데이터들을 정렬할 때 매우 유리하다.

profile
복습하기 위해 쓰는 글

0개의 댓글