对数字进行排序

本文探讨了如何使用直接选择排序和冒泡排序对数字进行排序。首先,按照从小到大的顺序应用了选择排序,接着采用冒泡排序实现从大到小的逆序排列。最终,博客展示了如何找出序列中的最大和最小值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

描述:

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

代码:

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值