首页 > 知识点讲解
       如何在r进制下运用基数排序
相关知识点:10个      
        如何依据实际情况,对任意r进制运用基数排序是基数排序算法设计的关键。下面通过例子来说明和理解基数排序。
        若下列C程序的功能是:用基数排序法对读入的n个无符号整数进行排序(排成从小到大的次序),请在程序空缺处填上适当字句,使其能正确执行。具体如下:
        
        基数排序的两种主要方法是:最高位优先MSD(Most Significant Digit first)和最低位优先LSD(Least Significant Digit first)。这里的程序采用最低位优先LSD方法对输入的n个整数进行排序,采用的主要思想是把各整数看成由4个16位数组成;若从低到高分别称为L1、L2、L3、L4,则执行如下步骤。
        (1)初始化计数器count[0…15],使各个count[i]=0(0≤i≤15)。
        (2)统计L1为0、1、…、15的各个整数个数分别到count[0…15]。
        (3)将count[0]、count[1]、…、count[15]合并起来得到L1为j(0≤j≤15)的整数在一趟排序后的起始位置;如a[j]在count[(a[j]>divisor%) Radix]到count[(a[j]/divisor)%Radix+1]-1之间;同时L1相同的整数的前后位置没有明显的界限,只需要根据读入的次序来定。
        (4)按照得到的各个整数a[i]的位置count[j]将该元素登记在相应的位置上,同时count[j]增加1,以便存放下一个和整数a[i]的L1相同的元素。
        (5)对L2、L3、L4重复上述过程。
        通过仔细分析,不难得到如下答案。
        (1)count[(a[i]/divisor)% Radix]
        (2)count[(a[i]/divisor)% Radix]+1
        (3)a[i]=t[i]
        (4)divisor*16
        进一步推广,若把整数看成八进制或其他进制,同样也能得到问题的答案。
 
 相关知识点:
 
软考在线指南
优惠劵及余额
在线支付
修改密码
下载及使用
购买流程
取消订单
联系我们
关于我们
联系我们
商务合作
旗下网站群
高级资格科目
信息系统项目管理师 系统分析师
系统架构设计师 网络规划设计师
系统规划与管理师
初级资格科目
程序员 网络管理员
信息处理技术员 信息系统运行管理员
中级资格科目
系统集成项目管理工程师 网络工程师
软件设计师 信息系统监理师
信息系统管理工程师 数据库系统工程师
多媒体应用设计师 软件评测师
嵌入式系统设计师 电子商务设计师
信息安全工程师
 

本网站所有产品设计(包括造型,颜色,图案,观感,文字,产品,内容),功能及其展示形式,均已受版权或产权保护。
任何公司及个人不得以任何方式复制部分或全部,违者将依法追究责任,特此声明。
本站部分内容来自互联网或由会员上传,版权归原作者所有。如有问题,请及时联系我们。


工作时间:9:00-20:00

客服

点击这里给我发消息 点击这里给我发消息 点击这里给我发消息

商务合作

点击这里给我发消息

客服邮箱service@rkpass.cn


京B2-20210865 | 京ICP备2020040059号-5 |京公网安备 11010502032051号 | 营业执照 | Copyright ©2000-2023 All Rights Reserved 软考在线版权所有