C++代码,数据结构-内部排序-基数排序-链式基数排序

本文介绍了如何使用C++编程实现数据结构中的链式基数排序方法,详细讲解了从个位开始的排序过程,并提供了基于书上伪代码的可运行代码示例,特别讨论了利用链表节省辅助空间的f和e数组实现细节。
摘要由CSDN通过智能技术生成

 基数排序是一种从记录最次位关键字开始排序的方法,比如数据,从个位开始排序,具体的方法可以参照书上,我把书上的伪代码以可运行代码的形式呈现:

难点:书上 f e 数组的实现用了链表,节省了辅助空间,f数组的值只指向该位数第一个值在序列中的位置,该位数上的序列依靠记录本身带有的next指针来连接,e数组的值只指向该位数序列上最后一个值在序列上的位置。

#include<iostream>
#include<cstdlib>
#include<fstream>
#include<cstdlib>
#include<ctime>
using namespace std;

#define Max_num_of_key 8
#define Radix 10
#define Max_space 51000
struct Slcell{
int keys[Max_num_of_key];
int data;
int next;
};

struct Slist{
Slcell r[Max_space];
int keymax;
int length;
};
typedef int Arrtype[Radix];

void buildslist(Slist &sl){//与前面不同,这里的记录多个一个keys用于记录每个data每一位上的数字,用于排序
cout<<"输入需要排序的数据数目和数据的最大位数"<<endl;
cin>>sl.length>>sl.keymax;
cout<<"依次输入数据"<<endl;
for(int i=1;i<=sl.length;++i){
    int x;
    cin>>x;
    sl.r[i].data=x;
}
for(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值