[汇编语言实现排序]以下是输入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分悬赏,哎,不如再开...