728x90
- 선택정렬(Selection sort)이란?
선택정렬은 정렬되지 않은 데이터들에 대해 가장 작은 데이터를 찾아 가장 앞의 데이터와 교환해 나가는 방식이다.
1. 리스트에서 최소값을 찾는다.
2. 최소값을 맨 앞의 값과 교체한다. (Swap)
3. 교체한 맨 앞의 데이터는 정렬된 것으로 간주하고 다음 인덱스부터 1, 2 행위를 끝까지 반복한다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SelectionSort
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("선택정렬");
int[] data = { 20, 15, 1, 5, 10 };
Console.Write("시작값 - ");
for(int i = 0; i < data.Length; i++)
{
Console.Write(data[i] + ", ");
}
Console.WriteLine();
//정렬
for(int i = 0; i < data.Length; i++)
{
int min = i;
for(int j = i + 1; j < data.Length; j++)
{
//최소값 비교
if (data[min] > data[j])
min = j;
}
Swap(ref data[i], ref data[min]);
for (int k = 0; k < data.Length; k++)
{
Console.Write(data[k] + ", ");
}
Console.WriteLine();
}
Console.Write("정렬값 - ");
for(int i = 0; i < data.Length; i++)
{
Console.Write(data[i] + ", ");
}
Console.WriteLine();
}
static void Swap(ref int a, ref int b)
{
int temp = a;
a = b;
b = temp;
}
}
}
- 선택정렬의 특징
- 구현은 단순하지만 비효율적인 방법
- 두 개의 for 루프의 실행 횟수
- Big-O 표기법
- O(1)
- O(log n)
- O(n)
- O(n log n)
- O(n^2)
728x90
'게임 프로그래밍 > C#' 카테고리의 다른 글
C# 정렬 알고리즘 - 퀵정렬(Quick sort) (0) | 2021.12.27 |
---|---|
C# 정렬 알고리즘 - 버블정렬(Bubble sort) (0) | 2021.12.27 |
C# 알고리즘 - 재귀호출(Recursive Call) (0) | 2021.12.27 |
C# 선형 자료구조 - 해쉬테이블 & 딕셔너리(HashTable & Dictionary<T>) (0) | 2021.12.27 |
C# 선형 자료구조 - 큐(Queue) (0) | 2021.12.26 |