0
我想在C++中創建一個bucketsort算法,但它根本不起作用。每一次運行,它都會向陣列中添加許多新數字,通常非常大,例如數十億。有人知道爲什麼嗎?這裏是代碼 - (請注意,我傳遞了一個大小爲100的數組,其中的隨機數從0到〜37000,並且插入排序函數功能齊全並已多次測試)如何獲取BucketSort算法的工作?
將不勝感激如果有人能指出什麼是錯的。
void bucketSort(int* n, int k)
{
int c = int(floor(k/10)), s = *n, l = *n;
for(int i = 0; i < k; i++) {
if(s > *(n + i)) s = *(n + i);
else if(l < *(n + i)) l = *(n + i);
}
int bucket[c][k + 1];
for(int i = 0; i < c; i++) {
bucket[i][k] = 0;
}
for(int i = 0; i < k; i++) {
for(int j = 0; j < c; j++) {
if(*(n + i) >= (l - s)*j/c) {
continue;
} else {
bucket[j][bucket[j][k]++] = *(n + i);
break;
}
}
}
for(int i = 0; i < c; i++) {
insertionSort(&bucket[i][0], k);
}
}
'bucket [j] [bucket [j] [k] ++] = *(n + i);'這真的是你的意思嗎?它看起來錯了。 – us2012 2013-02-16 18:46:10
我用作指數使用的計數器的最後一個索引;我沒看到那條線有什麼問題 – Cisplatin 2013-02-16 18:51:42
爲什麼你用'*(n + i)'代替'n [i]'?你是從一本很糟糕的書或教程中得到的嗎? – Blastfurnace 2013-02-16 20:36:15