0
私のソートの実装にはいくつか問題があります。私はいくつかのポインタを再割り当てしようとしていますが、これはうまくいきません。私は "sorted_arr"から "values"配列にソートされた値をコピーするためにループを使うことができますが、なぜ私のバージョンが動作しないのか理解したいと思います。前もって感謝します!別のポインタへのポインタの割り当て(ソートの計算)
void countingsort(unsigned int *values, unsigned long nofelements) {
unsigned int *aux_arr;
unsigned int *sorted_arr;
unsigned int *temp_arr;
long i;
aux_arr = calloc((MAXSORTVALUE + 1), sizeof(*aux_arr));
assert(aux_arr != NULL);
sorted_arr = malloc(nofelements * sizeof(*sorted_arr));
assert(sorted_arr != NULL);
for (i = 0; i < nofelements; i++) {
aux_arr[values[i]]++;
}
for (i = 1; i <= MAXSORTVALUE; i++) {
aux_arr[i] = aux_arr[i] + aux_arr[i - 1];
}
for (i = nofelements - 1; i >= 0; i--) {
sorted_arr[aux_arr[values[i]] - 1] = values[i];
aux_arr[values[i]]--;
}
temp_arr = values; // here is the reassignment
values = sorted_arr; // and here
free(temp_arr);
free(aux_arr);
}
ありがとうございました!私は今それを得ると思う – MyLion