编辑代码

#include<iostream>
#include<string.h>         // memset函数在此头文件中定义
#define MAX_LEN 100
using namespace std;
 
int main()
{
    int arr[]={78,17,39,26,72,94,21,12,23,68};                      // 简单情形:没有小数(如果有小数,可以考虑先整体*10^n,n为小数位最大值,后面再复原) 
    int i, bucket[MAX_LEN];
    memset(bucket,0,sizeof(bucket));              // 用多个桶分别来记录相应索引i在原数组arr中出现的次数,全初始化为0 
    int ElemNum=sizeof(arr)/sizeof(arr[0]);     // 计算原序列中数的个数,记为ElemNum
    for(i=0;i<ElemNum;i++)
    {
        int v=arr[i];
        bucket[v]++;     // 记录相应索引i在原数组arr中出现的次数,没有出现的元素,存默认的0到数组bucket中 
    }
    for(i=0;i<MAX_LEN;i++)
    {
        while(bucket[i]>0)
        {
            cout<<i<<" ";          // 按序出桶
            bucket[i]--;
        }
    }
    cout<<endl;
    return 0;
}