首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >桶排序产生错误的结果

桶排序产生错误的结果
EN

Stack Overflow用户
提问于 2014-12-05 07:18:53
回答 2查看 70关注 0票数 0

我一直试图使用较大的随机数来实现桶排序:“rand()%1000000问题是我得到的结果是错误的,并且没有正确列出,这里是我的桶排序代码

代码语言:javascript
复制
void binsort(int arr[], int n){
int maxsize = 1000000;
int *b = new int[maxsize];

for( int i = 0; i <= maxsize;i++){

    b[i] = 0;

}
for( int i = 0; i <n;i++){
    b[arr[i]]++;
    }
for(int j = 0; j <n;j++){
    if(b[j] !=0){
        cout<<b[j]<< " ";
        }

    }

}数组将填充“int random_number = rand() %1000000”的值。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-05 07:30:26

示例输入输出可能会有所帮助,但是"if(bj =0)“应该在这里做什么呢?我想,当计数为0时,打印0会给出一个更有用的结果。

编辑:阅读另一个答案的代码。这现在说得通了,但他的代码也缺少了一个for循环lol。

代码语言:javascript
复制
void binsort(int arr[], int n){
int maxsize = 1000000;
int *b = new int[maxsize];

for( int i = 0; i <= maxsize;i++){
    b[i] = 0;

}

for( int i = 0; i <n;i++)
{
    b[arr[i]]++;
}

for(int j = 0; j <maxsize;j++){
    if(b[j] !=0){
        for (int k = 0; k < b[j]; k++){
        cout<<j<< " ";
        }
    }    
}
票数 0
EN

Stack Overflow用户

发布于 2014-12-05 07:29:32

您的代码中很少有问题。这是正确的版本

代码语言:javascript
复制
void binsort(int arr[], int n){
    int maxsize = 1000000;
    int *b = new int[maxsize];

    for( int i = 0; i < maxsize;i++){         //correct the condition
        b[i] = 0;
    }
    for( int i = 0; i <n;i++){
        b[arr[i]]++;
    }
    for(int j = 0; j <maxsize;j++){       //run the loop for maxsize
        if(b[j] !=0){
           //Edit: loop over count to print the numbers
           for(int k=0; k<b[j]; ++k) {
              cout<<j<< " ";         //print j not b[j]
           }
        }

    }
}

编辑:当数组中有重复项时,忘记了情况。“计数”的内环会处理它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27310806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档