排序 - 次位优先实现基数排序(C++、静态链表)

本文介绍了如何使用C++实现次位优先的基数排序,重点在于链式存储的低位优先法(LSD)。通过详细代码展示了一种基于链表的基数排序算法,同时附带了运行结果。
摘要由CSDN通过智能技术生成

基数排序:

假如直到某个长度为n的序列中所有记录的值都在0~m-1之间。当值域m很大时可以对桶式排序做一些改进:将排序码(待排数据)拆分成多个部分进行比较。例如,如果要对0~9999之间的整数进行排序,可以先按千、百、十、个位拆分。这种将排序码按照其进制数的基数进行拆分排序的方法就是基数排序,是分配排序的一种特例。

低位优先法(least significant digit first,LSD)分配排序

从最低位K0开始排序,对于排好的序列再用次低位K1排序,依次重复,直至对最高位Kd-1排好序后,整个序列成为有序的。这是一个分、收;分、收;......;分,收的过程。

链式存储的LSD

这部分要用文字表述过于复杂,SO,直接上图.....

 

初始序列

64

8

216

512

27

729

0

1

343

125

Bucket

0

1

2

3

4

5

6

7

8

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值