问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c#基数排序

发布网友 发布时间:2022-05-10 07:04

我来回答

2个回答

热心网友 时间:2022-05-22 02:13

参考

/* 基数排序的算法源程序*/

#include <stdio.h>

#define D 3 /* D为排序码的最大位数 */
#define R 10 /* R为基数 */

typedef int KeyType;
typedef int DataType;

struct Node; /* 单链表结点类型 */
typedef struct Node RadixNode;

struct Node {
KeyType key[D];
/* DataType info;*/
RadixNode *next;
};

typedef RadixNode * RadixList;

typedef struct QueueNode {
RadixNode *f; /* 队列的头指针 */
RadixNode *e; /* 队列的尾指针 */
} Queue;

Queue queue[R];

void radixSort(RadixList * plist, int d, int r) {
int i,j,k;
RadixNode *p, *head = (*plist)-> next;

for(j = d-1; j > = 0; j--) { /* 进行d次分配和收集*/
p = head;
for(i = 0; i < r; i++) {
queue[i].f = NULL; queue[i].e = NULL; /* 清队列 */
}

while (p != NULL) {
k = p-> key[j]; /* 按排序码的第j个分量进行分配*/
if (queue[k].f == NULL)
queue[k].f = p; /* 若第k个队列为空,则当前记录为队头*/
else (queue[k].e)-> next = p;/* 否则当前记录链接到第k队的队尾*/
queue[k].e = p;
p = p-> next;
}

for(i = 0; queue[i].f == NULL; i++) /* 找出第一个非空队列*/
;
p = queue[i].e; head = queue[i].f; /* head为收集链表的头指针*/

for(i++; i < r; i++)
if(queue[i].f != NULL) { /* 收集非空队列 */
p-> next = queue[i].f;
p = queue[i].e;
}
p-> next = NULL;
}
(*plist)-> next = head;
}

struct Node element[11]={
0,0,0,NULL,/*表头*/
0,3,6,NULL,/*36*/
0,0,5,NULL,/*5*/
0,1,6,NULL,/*16*/
0,9,8,NULL,/*98*/
0,9,5,NULL,/*95*/
0,4,7,NULL,/*47*/
0,3,2,NULL,/*32*/
0,3,6,NULL,/*36*/
0,4,8,NULL,/*48*/
0,1,0,NULL /*10*/
};

int main(){
int i;
RadixList p = element;
for (i = 0; i < 10; i++)
element[i].next = &element[i+1];
element[10].next = NULL;
radixSort(&p, 3, 10);
p = p-> next;
while (p != NULL){
printf( "%d ", p-> key[1]*10+p-> key[2]);
p = p-> next;
}
getchar();
return 0;
}

热心网友 时间:2022-05-22 03:31

domian{ 我懂的不太多,帮不了你,不好意思啊!;

}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
猫咪丢了之后心里很难过,然后男友担心我就重新去领养了一只小花猫,可是... 有关名侦探柯南黑暗组织!! qq上删除的好友怎么找回来,六个月以上的。只要能找到QQ号就行,我可以... 六个月内删掉的qq好友能找回吗? 急!!因欠费而停机的手机能收到短信吗 手机关机之后停机信息是否可以收到 手机欠费后冲了钱但还是欠费会收到短信吗 手机停机了,包月的流量没用完,能收到微信吗? 德州到潍坊用不用隔离? 南都周刊2011年有一篇社论≪躺在时间的河流上怀念他们≫写得很棒... 链式基数排序的算法思想(C语言),越多越仔细越好 算法设计:输入N个只含一位数字的整数,试用基数排序的方法,对这N个数排... 如何知道自己QQ又没有被对方删除? 基数排序法的基数排序的实例模拟 基数排序法的基数排序的基本思想 基数排序的基本解法 学生68公斤,求制定减肥计划 便秘会引起肥胖吗?经常便秘。。该怎么办呢 oppo怎样登别人的在自己的手机上 OPPO手机怎么能登陆两个? 王者荣耀iPhone6高帧率模式怎么开 急求、快速、减肥计划(15岁) 长高的秘密,打一生肖 有关减肥计划 OPPO手机能同时登陆两个吗? 我是一个高中生、想在一个月之内瘦20斤 不要减肥药 给我个合理计划 求适合住宿学生减肥计划一周表 小学生减肥计划 请帮我制定一个适合我的减肥计划 我是学生 求适合中学生的减肥计划 用c语言编写一个排序程序,要求使用基数排序算法,最好能详细解释下,c语 ... 关于基数(桶)排序算法 数据结构基数排序问题 我的苹果六手机有时候电量不准,最近老还有六七十的电就自动关机怎么 Iphone5 频繁自动花屏重启,加电池显示电量不准 我的苹果六手机有时候电量不准,最近老还有六七十的电就自动关机怎么 糖醋萝卜怎么腌制好吃 4399小游戏攻略史上最贱游戏19关怎么过两个人大小不一样 史上最贱小游戏怎么玩?我第一关都过不去啊。。 4399小游戏中的史上最贱小游戏第2怎么过关 欠捷信公司半年了会不会被冻结? 我欠捷信金融公司2万块钱已逾期半年之久,现在没钱还。会抓人吗? 你好,我想问一下我欠捷信,2000,欠了半年 一直没钱还 他们跟我发短信说我被起还有罚款坐牢真的吗? 捷信逾期半年多了,是不是会上法庭告我~欠17000了 捷信分期半年未按时还款会影响信誉度吗? 我借捷信的贷款已逾半期半年,暂时还不上,继续拖欠会有什么后果? 惹恼的读音是什么 捷信贷款手机,还欠一千多已经逾期半年,赔偿两万合不合法? 惹的读音是什么↗ 欠捷信分期的钱半年没还了,今天收到一个电话,说,要我回去我家*_百度问一问