0
C++에서 bucketsort 알고리즘을 만들려고하는데 전혀 작동하지 않습니다. 매번 실행하면 많은 새로운 수를 추가합니다. 수십억에 이르는 수 많은 수의 수를 배열에 추가합니다. 아무도 이것이 왜 있는지 압니까? 여기에 코드가 있습니다. (0부터 ~ 37000까지의 임의의 숫자로 배열 100을 전달한다는 점에 유의하십시오. 그리고 삽입 정렬 함수는 완전히 기능적이며 여러 번 테스트되었습니다.)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);
}
}
버킷 [버킷 [j] [k] ++] = * (n + i); 그것은 정말로 당신이 의미하는 것입니까? 그것은 틀리게 보인다. – us2012
인덱스를 사용할 카운터의 마지막 인덱스. 그 라인에 무엇이 잘못되었는지 보지 못합니다. – Cisplatin
왜'n [i]'대신'* (n + i)'를 사용합니까? 끔찍한 책이나 튜토리얼에서 그걸 얻었습니까? – Blastfurnace