[C言語]伯俊10989:ソート数3
https://www.cs.miami.edu/home/burt/learning/Csc517.091/workbook/countingsort.htmlカウントソート例
https://soobarkbar.tistory.com/101カウント・ソートについて
上記の例としては、5 2 3 1 4 4 5 1 7の数字がある.ここでは各数字の周波数を計算し,配列に入れる.
0 1 2 3 4 5 6 7
0 2 2 1 2 2 0 1
これで周波数を求めることができます.そしてこの周波数をもとに0で順番探索をすればよい.
0は周波数0、パス
1は2回の出力周波数が2,1であることを示す
2は2回の出力周波数が2と2であることを示す
3の出力周波数は1、3回
4の出力周波数は2、4回
5は2回の出力周波数が2、5であることを示す
6の周波数は0、パス
7の出力周波数は1、7
習ったように積算を求める方式で行うことも可能ですが、この問題でメモリを制限できないことを確認しました.
だから上記の方法で行います.
https://kindload-save.tistory.com/49のアイデアを参照してください
に答える
#include <stdio.h>
int arr[10001];
int main()
{
int n, j;
int ins;
scanf("%d", &n);
int i = 1;
while(i <= n)
{
scanf("%d", &ins);
arr[ins]++;
i++;
}
i = 1;
while(i <= 10000)
{
j = 1;
while(j <= arr[i])
{
printf("%d\n", i);
j++;
}
i++;
}
}
Reference
この問題について([C言語]伯俊10989:ソート数3), 我々は、より多くの情報をここで見つけました https://velog.io/@kimmainsain/C언어-백준-10989-수-정렬하기-3テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol