三九宝宝网宝宝教育教学论文

求基数排序c代码

12月27日 编辑 39baobao.com

[汇编语言实现排序]以下是输入20个以下的字符,用冒泡法按从小到大排列输出的程序,希望对你用所帮助: data segment da1 db 20,?,20 dup (0) data ends stack segment stack dw 20 dup (0) stack e...+阅读

以前写过基数排序, 这是一种非比较性的排序

它的实现完全依靠的是正整数的特殊性质

不具有泛性,比如说你很难对一群对象排序,但基于比较的排序就可以

下面是源程序

这个排序实现比较糟糕,勉强凑合着看

#include

#include

#include

void rs(int *s, int n) { //radix sort

struct st {

int n;

struct st *p;

} r[10], t[10], *p = r, *q;

int i, k, c,j;

for (i = 0; i < 10; i++) r[i].p = NULL;

for (k = i = 0; i < n; k = k < s[i] ? s[i] : k, i++) {

p->n = s[i];

p->p = malloc(sizeof(*p));

p = p->p;

}

p->p = NULL;

for (c = 1; k / c; c *= 10) {

for (i = 0; i < 10; i++) t[i].p = NULL;

for (i = 0; i < 10; i++) {

q = r + i;

while (q->p != NULL) {

p = t + (q->n / c % 10);

while (p->p != NULL) p = p->p;

p->n = q->n;

p->p = malloc(sizeof(*p));

p->p->p = NULL;

q = q->p;

}

}

for (i = 0; i < 10; i++)

r[i] = t[i];

//输出每次排序后的情况

for (j = 0; j < 10; j++)

for (p = r + j; p->p != NULL; p = p->p)

printf("%d ",p->n);

printf(" sort at %d.\n",c);

}

for (c = i = 0; i < 10; i++)

for (p = r + i; p->p != NULL; p = p->p)

s[c++] = p->n;

}

int i;

int s[20];

int main() {

srand(time(0));

for(i=0;i<20;i++) printf("%d ",s[i] = rand()%1000);

printf("\n");

rs(s,20);

return 0;

}

以下为关联文档:

求汇编语言排序程序的理解8086汇编, 数据段 一开始用org 伪指令来指定了数据存放的区域 . 1000h 代码段 一共两个函数: 一个主函数 main,一个功能函数outputax. 整个代码的入口点在main函数的第一行star...

帮忙汇编语言数据的排序急急急急急急!1;----------------------------------------------------- SORT: ;排序程序. MOV B, #49 ;第一轮排序时,比较49次. S1: MOV R0, #20H ;数据区的起始地址. CLR PSW.5 ;清除"交换"标志...

求一段8086的汇编语言程序对50个带符号字节数据进行排序将排;---------------------------------- ;冒泡排序 ;负数显示补码如-1显示65535 ;如想增加数据只需在a变量中添加, ;同时长度len要相应的更改 ;----------------------------------...

用有符号数实现排序的汇编语言程序DSEG SEGMENT n equ 5 buf db n dup(?) DSEG ENDS CSEG SEGMENT assume cs:CSEG, ds:DSEG MAIN PROC FAR ;主程序入口 mov ax, dseg mov ds, ax mov cx,n dec cx loop1: mov...

汇编语言 10个数排序流程图稍有点繁,下列子程序可以满足流程图的排序要求。 SORT: MOV R0, #30H MOV A, R0 MOV R1, A INC R1 LOOP: MOV A, R0 MOV B, R1 CJNE A, B, SSS SSS: JNC ZZZ MOV R0, B...

汇编语言排序问题;修改完毕,测试结果正确 STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS DATA SEGMENT MSR DB '423756$' ;不要逗号 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STAC...

汇编语言起泡排序算法这是个排序程序,应该把输出程序中的6个数字,排序输出。 但是程序中略有失误,输出了无效的内容。 下面的已经改好,可以试试看: DATA SEGMENT A DW 03H, 0DH, 08H, 9DH, 81H, 0FDH...

本人汇编小菜鸟求大神汇编语言中我写的冒泡排序程序为什么不能“di=?” 不知道, [di] 传送到 bl、dl的是什么? bx的高位“bh=?”也不知道 ! 程序看着有点乱。给你一个子程序,你研究下: ;=============================== ; 单个字符串内部的排序...

c语言基数排序如图 这个基数排序你是要LSD呢还是MSD?我暂时用系统自带快排代替。而且基数排序要根据待排序对象的特征来专门设计,所以系统库中也不会有基数排序。(你这100分悬赏,哎,不如再开...

推荐阅读
图文推荐