Я пишу счетную сортировку в C. N - это количество элементов в таблице, которые должны быть отсортированы, k - это максимальное значение, которое может иметь любой из этих элементов. Однако этот код оставляет меня с той же таблицей, что и входные данные. Что не так?
void countingSort(int *tab, int n, int k) {
int *counters = (int *)malloc(k * sizeof(int));
int *result = (int *)malloc(n * sizeof(int*));
for (int i = 0; i < k; i++) {
counters[i] = 0;
}
for (int i = 0; i < n; i++) {
counters[tab[i]]++;
}
int j = 0;
for (int i = 0; i < k; i++) {
int tmp = counters[i];
while (tmp--) {
result[j] = i;
j++;
}
}
tab = result;
}