알고리즘/정렬

선택정렬

kark 2024. 1. 6. 21:56
728x90

선택정렬은 내림차순 정렬일경우 다음 인덱스의 데이터들중 가장 작은값을 현재 인덱스로 옮기는 방법

구현 방법은 조금 까다롭고, 시간 복잡도도 O(n2)으로 효율이 떨어지는 방식

 

대신 N 번의 루프로 N번의 데이터 순서 정렬이 확실시 된다는 점이 있다.

 

문제

https://www.acmicpc.net/problem/1427

 

1427번: 소트인사이드

첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net

 

풀이

Sort(Console.ReadLine());

void Sort(string input)
{
    int[] arr = new int[input.Length];

    for (int i = 0; i < input.Length; i++)
    {
        arr[i] = int.Parse(input[i].ToString());
    }

    for (int i = 0; i < input.Length; i++)
    {
        int targetPoint = i;

        for (int j = i + 1; j < input.Length; j++)
        {
            if (arr[targetPoint] < arr[j])
                targetPoint = j;
        }

        if (targetPoint != i)
        {
            int tempValue = arr[targetPoint];
            arr[targetPoint] = arr[i];
            arr[i] = tempValue;
        }
    }

    foreach (var value in arr)
    {
        System.Console.Write(value);
    }
}

 

미흡한부분이나 개선될 수 있는부분이 있다면 댓글 부탁드립니다.

'알고리즘 > 정렬' 카테고리의 다른 글

병합정렬  (0) 2024.02.21
퀵정렬  (0) 2024.02.19
삽입정렬  (1) 2024.02.08
버블정렬  (0) 2024.01.06