я следующий код, но это работает только для беззнаковых целых чисел, и моя цель состоит в том, чтобы написать код, который будет работать для всех Интса ...Использование функции подсчета сортировки по отрицательным значениям?
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]]--;
}
}
Как я могу изменить это работать для всех целочисленных типов?
Вы должны либо утверждать, что ваши входы ('Ā') не являются пустыми или не оп тот случай. В противном случае вы будете разбивать свою программу, когда вы этого меньше всего ожидаете. –
Обычно рекомендуется оставить проверенные алгоритмы работы неповрежденными и преобразовать вход и выход. Если это не для целей обучения и мастеринга: D –