선택정렬(selection sort)
가장 작은 것을 선택해서 제일 앞으로 보내면 어떨까? 해서 나온 답이 >> 선택 정렬은 정렬되지 않은 데이터들에 대해 가장 작은 데이터를 찾아 가장 앞의 데이터와 교환해 나가는 방식이다.
선택정렬 과정
- 리스트에서 최소값을 찾는다.
- 최소값을 맨 앞의 값과 교체한다. (Swap)
- 교체한 맨 앞의 데이터는 정렬된 것으로 간주하고 다음 인덱스부터 1, 2 행위를 끝까지 반복한다.
선택정렬(selection sort) 이론
한번 지금 아래사진 선택 정렬 해보겠습니다.
지금 아래사진처럼 5와 1에 위치를 변경했습니다.
이 과정을 계속해보겠습니다.
이렇게 선택정렬이 다 되었습니다. 이제 그림으로 다 봤으니 코드로 보겠습니다
선택정렬(selection sort) 코드
using System;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
List<int> list = new List<int> { 5, 4, 1, 2, 3 };
Console.WriteLine("정렬 하기 전 리스트 안:");
PrintList(list);
SelectionSort(list);
Console.WriteLine("정렬 하기 후 리스트 안:");
PrintList(list);
}
static void SelectionSort(List<int> list)
{
int n = list.Count;
for (int i = 0; i < n - 1; i++)
{
// 최소값의 인덱스를 찾음
int minIndex = i;
for (int j = i + 1; j < n; j++)
{
if (list[j] < list[minIndex])
{
minIndex = j;
}
}
// 최소값을 정렬되지 않은 부분의 첫 번째 요소와 교환
int temp = list[minIndex];
list[minIndex] = list[i];
list[i] = temp;
}
}
static void PrintList(List<int> list)
{
foreach (int item in list)
{
Console.Write(item + " ");
}
Console.WriteLine();
}
}

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