当使用一种称为 tubor 排序的算法对数组进行排序时,我实现了它,当我运行它时,我得到了分段错误。即使我搜索了网络并且没有类似的错误,我还是决定在这里发布。这个错误可能是因为我在for循环中将辅助数组的大小设置为数组的大小,有没有更好的方法来编写这段代码?下面是源码。
#include <stdio.h>
void TuborSort(int* array) {
int aux[5] = { 0, 0, 0, 0, 0 };
int i;
for (i = 0; i < sizeof(array); i++) {
aux[array[i]]++;
}
int j = 0;
for (i = 0; i < 5; i++) {
while(aux[i]-- > 0) {
array[j++] = i;
}
}
}
int main() {
int array[6] = {2, 5, 1, 4, 1};
int i;
TuborSort(array);
for (i = 0; i < sizeof(array); i++)
printf("%d ", array[i]);
return 0;
}