삽입정렬(insertion sort)
각 숫자를 적절한 위치에 삽입하면 어떨까? 해서 나온 답이 >> 삽입 정렬은 앞의 숫자가 나보다 큰지 비교하면서 자신의 위치에 삽입하는 정렬 방법
삽입정렬 과정
- 첫 번째 원소는 이미 정렬된 것으로 간주하고, 두 번째 원소부터 시작합니다.
- 현재 정렬된 부분과 비교하면서 적절한 위치에 삽입합니다.
- 배열의 끝까지 이 과정을 반복합니다.
삽입정렬(insertion sort) 이론
이제 아래 사진과 함께 설명해보겠습니다.
그림에 있는 빨간색을 기준으로 보면서 위에 글을 확인하시고
각 숫자를 적절한 위치에 삽입하면 어떨까? 를 기억하시면 이해가 잘 될 겁니다.
삽입정렬(insertion sort) 코드
using System;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
// 배열을 [3, 7, 2, 5, 1, 4]로 수정
List<int> list = new List<int> { 3, 7, 2, 5, 1, 4 };
Console.WriteLine("정렬 하기 전 리스트 안:");
PrintList(list);
InsertionSort(list);
Console.WriteLine("정렬 하기 후 리스트 안:");
PrintList(list);
}
static void InsertionSort(List<int> list)
{
int n = list.Count;
for (int i = 1; i < n; i++)
{
int key = list[i];
int j = i - 1;
// key보다 큰 값들은 오른쪽으로 이동
while (j >= 0 && list[j] > key)
{
list[j + 1] = list[j];
j--;
}
// key를 적절한 위치에 삽입
list[j + 1] = key;
}
}
static void PrintList(List<int> list)
{
foreach (int item in list)
{
Console.Write(item + " ");
}
Console.WriteLine();
}
}

728x90
'컴퓨터공학 > 알고리즘' 카테고리의 다른 글
알고리즘 - 퀵정렬(quick sort) c# (0) | 2025.05.04 |
---|---|
알고리즘 - 버블정렬(bubble sort) c# (0) | 2024.06.06 |
알고리즘 - 선택정렬(selection sort) c# (0) | 2024.06.06 |
알고리즘 - 재귀호출(recursive call) c# (0) | 2024.06.04 |