私はすべての整数型のために働くためにこれを変更するにはどうすればよいカウントソートを使用すると負の値になりますか?
void CountingSort(vector<int> & a, vector<int> & b)
{
int k=*max_element(a.begin(),a.end());
k++;
vector <int> c(k);
for (int i=0;i<a.size();i++)
c[a[i]]++;
for (int i=1;i<k;i++)
c[i]=c[i]+c[i-1];
for (int i=0;i<a.size();i++)
{
b[c[a[i]]-1]=a[i];
c[a[i]]--;
}
}
...私は、コードを次しているが、これは、符号なし整数型でのみ動作し、私の目標は、すべてのint型のために働くだろうコードを記述するのですか?最小値と最大値を算出することにより
あなたはあなたの入力( 'A')が空か、その場合はノーオペレーションではないことを主張しなければならないのいずれか。さもなければ、あなたが少なくともそれを期待するときあなたのプログラムをクラッシュさせます。 –
実績のある作業アルゴリズムをそのままにして、入力と出力を変換することは、通常は良い考えです。それが学習目的でなければ、D –