알고리즘/정렬

삽입정렬

kark 2024. 2. 8. 13:23
728x90

현재 선택한(정렬되지않은) 데이터를 기존 정렬된 데이터의 적절한 위치에 삽입시켜 정렬하는 방식

시간 복잡도는 O(n²) 이고 구현하기 쉬운편

 

 

문제

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

 

11399번: ATM

첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)

www.acmicpc.net

 

풀이

int count = int.Parse(Console.ReadLine());
int[] arr = Array.ConvertAll(Console.ReadLine().Split(' '),int.Parse);

for (int i = 1; i < count; i++)
{
    int selectedData = arr[i];
    int insertPointer = i;

    for (int j = i-1; j >= 0; j--)
    {
        if(arr[j] > selectedData)
        {
            insertPointer--;
            arr[j+1] = arr[j];
        }
        else
            break;
    }

    arr[insertPointer] = selectedData;
}

for (int i = 1; i < count; i++)
{
    arr[i] += arr[i-1];
}

System.Console.WriteLine(arr.Sum());

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

병합정렬  (0) 2024.02.21
퀵정렬  (0) 2024.02.19
선택정렬  (1) 2024.01.06
버블정렬  (0) 2024.01.06