C++排序算法之基数排序

本文详细介绍了C++实现基数排序的原理与过程,包括最高位优先和最低位优先两种方式,并通过扑克牌的例子进行解释。同时提供了完整的C++代码示例,包括整数和字符串的基数排序,分析了时间复杂度和空间复杂度。
摘要由CSDN通过智能技术生成
基数排序

基数排序是一种非比较的排序算法,它是以桶排序为基础的,其思想是“多关键字排序”。
基数排序有两种实现方式:
(1)最高位优先:即先按最高位排成若干子序列,在对每个子序列按次高位排序。
     举例:扑克牌的例子,就是先按花色排成4个子序列,在对每种花色的13张牌进行排序,最终使所有的扑克牌整体有序。
(2)最低位优先:这种方式不必分成子序列,每次排序全体元素都参与。
     举例:扑克牌的例子,就是先按数字将牌分配到13个桶中,然后从第一个桶开始依次收集;再将收集好的牌按花色分配到4个桶中,然后还是从第一个桶开始依次收集。经过两次“分配”和“收集”操作,最终使牌有序。

执行过程:
原始序列: 278  109  063 930  589  184  505  296  008  083
每个元素都是由“数字”组成,数字的范围是0~9,所以准备10个桶来放元素。如果元素不只有数字组成,例如还有一位是英文字母,那么按字母这一位进行排序时,要准备26个桶(假设不区分大小写)。注意这里所说的“桶”,相当于一个先进先出的队列(从上面进,下面出)。

(1)进行第一趟分配和收集,按照最后位。
     分配过程如下(注意数据从桶的上面进入࿰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值