我正在尝试在 C++ 中创建一个桶排序算法,但它根本不起作用。每次运行时,它都会将许多新数字添加到数组中,这些数字通常非常大,例如数十亿。有人知道为什么是这样吗?这是代码 - (请注意,我传入一个大小为 100 的数组,随机数从 0 到 ~37000,并且插入排序功能功能齐全并经过多次测试)
如果有人能指出问题所在,将不胜感激。
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);
}
}