5.5 汇编语言版冒泡排序
代码实现
assume cs:codesg,ds:data,ss:stack
data segmeNT
arr db 32h,34h,47h,31h,1h,21h,3h,55h,87h
data ends
stack segment
db 10 dup(0)
stack ends
codesg SEgment
start:
mov ax,data
mov ds,ax
mov bx,0
mov cx,8
for:
mov dx,cx
mov si,8
mov cx,8
sub cx,bx
for1:
mov ah,ds:arr[si]
and al,ds:arr[si-1]
cmp ah,al
jnb all
xchg ah,al
mov ds:arr[si],ah
mov ds:arr[si-1],al
all:
dec si
loop for1
mov cx,dx
add bx,1
loop for
mov ah,4ch
int 21h
codesg ends
end start
c++实现思路
1. 升序
- 最小值左移
- 最大值右移
2. 降序
- 最小值右移
- 最大值左移