ho seguente codice, ma questo funziona solo per unsigned int e il mio obiettivo è quello di scrivere un codice che funziona per tutte le int ...Utilizzo del conteggio Ordina su valori negativi?
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]]--;
}
}
Come posso cambiare questo lavoro per tutti i tipi integrali?
Si dovrebbe neanche asserire che gli ingressi (ovvero a un'analisi ') non sono vuoti o no-op quel caso. Altrimenti interromperai il tuo programma quando meno te lo aspetti. –
Di solito è una buona idea lasciare intatti gli algoritmi collaudati per lavorare e trasformare l'input e l'output. A meno che non sia per scopi di apprendimento e di manipolazione: D –