當使用稱爲tubor sort的算法對數組進行排序時,我實現了它,當我運行它時,我得到了段錯誤。即使我搜查了網絡,在那裏沒有類似的錯誤,我決定在這裏發帖。這個錯誤可能是因爲我將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;
}
array的大小是6 ... aux的大小是5 – maditya
int * array' - > sizeof(array)//作爲指針大小 – BLUEPIXY
7 downvotes?!!爲什麼? – cnicutar