계수정렬

gksrudtlr
|2023. 10. 30. 19:54
  • 정의
    • 데이터 값의 갯수를 count해 그 데이터가 얼마나 있는지를 알 수 있는 정렬 알고리즘이다
  • 조건
    • 데이터가 양수만 존재해야 한다
    • 데이터의 크기가 매우 작아야한다
  • 핵심
    • 주어진 수의 +1만큼 배열을 미리 만들어 준다
    • 입력받은 값에 속하는 index번지에 count를 +1씩 해준다
    • 출력시 배열이 0 이 아닌 index에 count한 수만큼 index를 출력해준다
  • 구현
#include <iostream>

using namespace std;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int n{};
	int input{};
	int arr[10001]{};
	cin >> n;

	for (int i = 0; i < n; i++)
	{
		cin >> input;
		arr[input]++;
	}

	for (int i = 0; i < 10001; i++)
	{
		if (arr[i] != 0)
		{
			for (int j = 0; j < arr[i]; j++)
			{
				cout<<i<<"\n";
			}
		}
	}
}

'자료구조 > Do It' 카테고리의 다른 글

BFS(너비 우선 탐색)  (0) 2023.11.08
깊이 우선 탐색(DFS)  (0) 2023.11.07
기수정렬  (0) 2023.10.30
병합 정렬(Merge Sort)  (1) 2023.10.27
퀵 정렬  (0) 2023.10.26