排序8:基数排序

基数排序是一种稳定的排序算法,通过按位数从低位到高位进行排序。首先根据个位数字进行队列操作,然后是十位,接着是百位,直到所有位数排序完成,原数据变得有序。该算法的时间复杂度为O(d*n),其中d为位数,n为数据量,空间复杂度为O(n)。
摘要由CSDN通过智能技术生成

基数排序

1.原理
设10个原数据,以及10个队列如下
在这里插入图片描述
以每个数据的个位数字进队:
在这里插入图片描述
再从左往右依次出队(注:队列是先进先出原则)
在这里插入图片描述
以十位数字进队再依次出队
在这里插入图片描述在这里插入图片描述
以百位数字进队再依次出队
在这里插入图片描述
原数据有序

2.代码

//链式队列(c语言中得自己写,c++库里有可以直接调用)
typedef struct Node
{
   
  int data;
  struct Node*next;
}Node;

typedef struct HNode
{
   
   Node *front;//队头
   Node *rear;//队尾 
}HNode;

void InitQueue(Queue q)
{
   
  assert(q != NULL);
  q->front = NULL;
  q->rear = NULL;
}
//判断队列是否为空
bool IsEmpty(Queue q)
{
   
  return q->front == NULL;
}

//入队
bool Push(Queue q,int val)
{
   
  Node *p = (Node*<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值