Я должен реализовать сортировку Binary Radix для своего задания. Хотя я заставил его работать, он перестает правильно сортировать (на самом деле не сортирует их), как только он достигает большего числа чисел (обычно 300+). Кто-нибудь знает, в чем проблема?
vector<unsigned char> A; //gets input from file that we have been given, containing 1000 numbers
vector<unsigned char> C(2);
vector<unsigned char> B(A.size());
for (int i = 0; i < A.size(); i++) {
B.push_back(0);
}
for (int k = 0; k < 8; k++) {
C[0] = 0;
C[1] = 0;
for (int i = 0; i < A.size(); i++) {
C[((int)A[i] >> k) & 1]++;
}
C[1] += C[0];
for (int j = A.size() - 1; j >= 0; j--) {
B[--C[(int)(A[j] >> k) & 1]] = (int)A[j];
}
std::swap(A, B);
}
После некоторого тестирования кажется, что ограничение составляет 256 номеров. Поэтому, когда число превышает 256, алгоритм больше не может его сортировать