博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基数排序:一种多关键字的排序算法,可用桶排序实现
阅读量:6601 次
发布时间:2019-06-24

本文共 1453 字,大约阅读时间需要 4 分钟。

// 基数排序:一种多关键字的排序算法,可用桶排序实现。int maxbit(int data[], int n) //辅助函数,求数据的最大位数{    int maxData = data[0];        ///< 最大数    /// 先求出最大数,再求其位数,这样有原先依次每个数判断其位数,稍微优化点。    for (int i = 1; i < n; ++i)    {        if (maxData < data[i])            maxData = data[i];    }    int d = 1;    int p = 10;    while (maxData >= p)    {        //p *= 10; // Maybe overflow        maxData /= 10;        ++d;    }    return d;/*    int d = 1; //保存最大的位数    int p = 10;    for(int i = 0; i < n; ++i)    {        while(data[i] >= p)        {            p *= 10;            ++d;        }    }    return d;*/}void radixsort(int data[], int n) //基数排序{    int d = maxbit(data, n);    int *tmp = new int[n];    int *count = new int[10]; //计数器    int i, j, k;    int radix = 1;    for(i = 1; i <= d; i++) //进行d次排序    {        for(j = 0; j < 10; j++)            count[j] = 0; //每次分配前清空计数器        for(j = 0; j < n; j++)        {            k = (data[j] / radix) % 10; //统计每个桶中的记录数            count[k]++;        }        for(j = 1; j < 10; j++)            count[j] = count[j - 1] + count[j]; //将tmp中的位置依次分配给每个桶        for(j = n - 1; j >= 0; j--) //将所有桶中记录依次收集到tmp中        {            k = (data[j] / radix) % 10;            tmp[count[k] - 1] = data[j];            count[k]--;        }        for(j = 0; j < n; j++) //将临时数组的内容复制到data中            data[j] = tmp[j];        radix = radix * 10;    }    delete []tmp;    delete []count;}

 

转载于:https://www.cnblogs.com/wpgraceii/p/10684022.html

你可能感兴趣的文章
react-native笔记(flexbox)
查看>>
《CSAPP》读书笔记 -- 第2章:浮点数原理(小专题)
查看>>
pow算法思考
查看>>
flutter自定义View(CustomPainter) 之 canvas的方法总结
查看>>
JavaScript深入理解之undefined与null
查看>>
如何使用Python编写vim插件
查看>>
论良好习惯的重要性
查看>>
node项目错误处理与日志
查看>>
前端日刊君来也
查看>>
OC 链式编程实战(封装NSMutableAttributedString)
查看>>
python中对文件的操作
查看>>
mysql数据库理论与实战
查看>>
面试题总结-Android部分
查看>>
从SpringMvc源码分析其工作原理
查看>>
上海下雨了,不来点函数防抖、节流压压惊?
查看>>
安卓开发框架系列开篇
查看>>
人民日报:不能让算法决定内容 否则价值取向跑偏
查看>>
react使用之ruex状态管理
查看>>
KVOController源码学习
查看>>
《JavaScript编程精解》--读书笔记
查看>>