Я получил задание в классе для реализации алгоритма сортировки Binary Radix. Я тщательно следовал инструкциям, но это просто не работает. Правила заключались в том, что он должен использовать тип данных unsigned char и должен использовать устойчивый алгоритм сортировки (например, сортировку по счету) для сортировки битов. Это код:
unsigned char A[6];
unsigned char C[2];
unsigned char B[6];
A[0] = 14;
A[1] = 5;
A[2] = 2;
A[3] = 12;
A[4] = 228;
A[5] = 151;
for (size_t k = 0; k < 8; k++)
{
for (int l = 0; l < 6; ++l) {
B[l] = 0;
}
C[0] = 0;
C[1] = 0;
for (int i = 0; i < 6; i++)
{
C[(A[i] >> k) & 1]++;
}
C[1] = C[1] + C[0];
for (int j = 0; j < 6; ++j) {
B[--C[(A[j] >> k) & 1] ] = A[j];
}
swap(A, B);
}
A - входной массив (с числами, которые необходимо отсортировать), C - это массив подсчета значений для сортировки (установлен в два, поскольку он считает биты) и B - дополнительный массив для подсчета сортировки. Что я сделал не так? Спасибо!