게임/자료구조&알고리즘

정렬 - 추가중

MAKGA 2021. 7. 30. 22:31
320x100
  Best Worst Memory
선택정렬 n^2 n^2 1
버블정렬 n n^2 1
삽입정렬 n n^2 1
합병정렬 n log n n log n n
힙정렬   n log n 1
퀵정렬 n log n n log n 1

 

아래 설명은 정렬할 데이터를 vector<int>로 가정하고 설명한다.

 

1. 선택정렬

처음부터 끝까지 순회하며 현재 위치에 들어갈 값을 찾아 넣는 방식

void sort(vector<int>& v)
{
    for (int i = 0; i < v.size(); i++)
    {
        int min_index = i;

        for (int j = i + 1; j < v.size(); j++)
        {
            if (v[min_index] > v[j]) {
                min_index = j;
            }
        }

        int temp = v[i];
        v[i] = v[min_index];
        v[min_index] = temp;
    }
}

 

 

2. 버블정렬

인접한 두 수를 비교하여 작은 값을 앞으로, 큰 값을 뒤로 보내주며 정렬하는 방식

(가장 비 효율적인 방법)

void sort(vector<int>& v)
{
    for (int i = 0; i < v.size(); i++)
    {
        for (int j = i + 1; j < v.size(); j++)
        {
            if (v[i] > v[j])
            {
                int temp = v[i];
                v[i] = v[j];
                v[j] = temp;
            }
        }
    }
}

 

 

3. 삽입 정렬

선택된 값이 들어갈 위치를 찾아 해당 위치에 넣어주며 정렬하는 방식

 

 

이후 추가 예정

320x100

'게임 > 자료구조&알고리즘' 카테고리의 다른 글

[작성중] 문자열 검색  (0) 2023.05.28
[알고리즘] 허프만 트리를 이용한 텍스트 압축  (0) 2021.07.02
싱글톤  (0) 2021.05.10