チューバーソートと呼ばれるアルゴリズムを使用して配列をソートするときに、それを実装し、実行するとセグメンテーション違反が発生します。ネットを検索しても同様のエラーはありませんでしたが、ここに投稿することにしました。このエラーは、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;
}