c++ - 实现计数排序

标签 c++ sorting

这里是计数排序的代码

#include <iostream>
using namespace std;

int main(){
    int a[]={2,3,1,2,3};
    int n=sizeof(int)/sizeof(int);
    int max=a[0];
    for (int i=1;i<n;i++) {
        if (a[i]>max) { 
            max=a[i];
        }
    }

    int *output=new int[n];
    for (int i=0;i<n;i++) {
        output[i]=0;
    }
    int *temp=new int[max+1];
    for (int i=0;i<max+1;i++) {
        temp[i]=0;
    }
    for (int i=0;i<n;i++){
        temp[a[i]]=temp[a[i]]+1;
    }
    for (int i=1;i<max+1;i++) {
        temp[i]=temp[i]+temp[i-1];
    }
    for (int  i=n-1;i>=0;i--) {
        output[temp[a[i]]-1]=a[i];
        temp[a[i]]=temp[a[i]]-1;
    }
    for (int i=0;i<n;i++) {
        cout<<output[i]<<"  ";
    }
    return 0;
}

但输出只有2,只有一个数字。怎么了我不明白请大家帮帮我

最佳答案

int n=sizeof(int)/sizeof(int);

错了。这只是将 1 分配给 n

你的意思是

int n=sizeof(a)/sizeof(int);

我没有看得更远。毫无疑问还有更多问题,但这是最重要的。

这是您可以使用调试器轻松解决的问题。

关于c++ - 实现计数排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7628562/

相关文章:

php - 按另一个预定义的、非详尽的数字数组对数字数组进行排序,然后升序排序

ruby - 如何进行稳定排序?

java - 如何在Java中自定义Set的排序

Java数组降序排序?

python - 按字母顺序对列表进行排序(数字在小写字母前面,在大写字母前面

c++ - 插入从函数返回的 std::vector

C# 类似于 C++ 中的 DateTime

c++ - output_tensor 出现 dlib fatal error

java - 口译员会出错吗?

c++ - 测试迭代器是否指向最后一项?