#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void SortCount(vector<int>& vec){
int max_el = *max_element(vec.begin(), vec.end());
vector<int> C(max_el+1, 0);
vector<int> B(vec.size(), 0);
for(int i = 0; i < vec.size(); i++){
C[vec[i]] = C[vec[i]] + 1;
}
for(int i = 1; i <= vec.size(); i++){
C[i] = C[i] + C[i - 1];
}
for(int i = 0; i < vec.size(); i++ ) {
B[C[vec[i]] - 1] = vec[i];
C[vec[i]] = C[vec[i]] - 1;
}
for(int i=0; i<vec.size(); i++){
vec[i] = B[i];
}
}
int main() {
vector<int> vec {5,2,43,31,67,311};
SortCount(vec);
for (size_t i=0; i <vec.size(); i++) {
cout<<vec[i]<<" ";
}
return 0;
}
Я сделал именно по книге, но по какой-то причине она просто распечатывает значения в тех же порядках, в которых они были размещены. Где я запутался?
Редактировать: я добавил основную функцию