对数字进行直接选择排序、冒泡排序

本文详细介绍了使用直接选择排序和冒泡排序对数字数组进行升序和降序操作,并最终输出最小值和最大值的过程。

描述:

对数字先用了直接选择排序从小到大进行了排序,然后用冒泡排序逆序从大到小排序,最后输出最大最小

代码:

DATA    SEGMENT
        STR1    DB      0DH,0AH,'BEFORE SORT$'
        STR2    DB      0DH,0AH,'DIRECT SORT L2B$'
        STR3    DB      0DH,0AH,'BUBBLE SORT B2L$'
        STR4    DB      0DH,0AH,'MIN$'
        STR5    DB      0DH,0AH,'MAX$'
        SCORE   DB      0,3,2,3,5,4,1,7,6,8,9,8,9
        COUNT   EQU     $-SCORE
DATA    ENDS
CODE    SEGMENT
        ASSUME  CS:CODE,DS:DATA
START:
        MOV     AX,DATA
        MOV     DS,AX
        MOV     DX,OFFSET STR1
        CALL    OUTPUT1
        MOV     CX,COUNT
        MOV     BX,OFFSET SCORE
	CALL    OUTPUT2
        MOV     CX,COUNT-1		;直接选择排序开始
        MOV     SI,OFFSET       SCORE
D1:
        MOV     AL,[SI]
        MOV     DI,SI
        INC     DI
        MOV     BX,CX
D2:
        CMP     AL,[DI]
        JB      DNEXT
        XCHG    AL,[DI]
DNEXT:
        INC     DI
        DEC     BX
        JNZ     D2
	MOV 	[SI],AL
        INC     SI
        LOOP    D1

        MOV     DX,OFFSET STR2
        CALL    OUTPUT1
        MOV     CX,COUNT
        MOV     BX,OFFSET SCORE
        CALL    OUTPUT2     

        MOV 	CX,COUNT-1		;冒泡排序
B1:
        MOV     SI,OFFSET SCORE
        MOV     BX,CX
B2:
        MOV     AL,[SI]
        CMP     AL,[SI+1]
        JAE     BNEXT
        XCHG    AL,[SI+1]
        MOV     [SI],AL
BNEXT:
        INC     SI
        DEC     BX
        JNZ     B2
        LOOP    B1

        MOV     DX,OFFSET STR3
        CALL    OUTPUT1
        MOV     CX,COUNT
        MOV     BX,OFFSET SCORE
        CALL    OUTPUT2

        MOV     DX,OFFSET STR4
        CALL    OUTPUT1
        MOV     CX,1
        MOV     BX,OFFSET SCORE
        ADD     BX,COUNT
        CALL    OUTPUT2

        MOV     DX,OFFSET STR5
        CALL    OUTPUT1
        MOV     CX,1
        MOV     BX,OFFSET SCORE
        CALL    OUTPUT2

        MOV     AH,4CH
        INT     21H
        RET       
OUTPUT1 PROC			;输出字符串子过程
        MOV     AH,9
        INT     21H
	RET

OUTPUT1 ENDP

OUTPUT2 PROC			;输出数字子过程
        MOV     DL,0DH
        MOV     AH,2
        INT     21H
        MOV     DL,0AH
        MOV     AH,2
        INT     21H
OP2L1:
        MOV     DL,[BX]
        ADD     DL,30H
        MOV     AH,2
        INT     21H
        INC     BX
        MOV     DL,20H
        MOV     AH,2
        INT     21H
        LOOP    OP2L1
	MOV	AH,3
	RET
OUTPUT2 ENDP

CODE    ENDS
END     START


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值