主题:起泡算法程序改进问题,那位大侠可以助我,将不胜感激!!!
1,在外循环进内循环建立Flag标志,查看其是否交换过,若交换过flag变,若没flag不变.
2.小循环中每一次循环的次数减小将最后完成的位置,做为下一次循环的次数.
对下列程序进行以上两点改进.
datarea segment
a dw n dup(?)
datarea ends
prognam segment
main proc far
assume cs:prognam,ds:datarea
start:
push ds
sub ax,ax
push ax
mov ax,datarea
mov ds,ax
mov cx,n
dec cx
loop1: mov cx,n
mov bx,0
loop2: mov ax,a[bx]
cmp ax,a[bx+2]
jge cotinue
xchg ax,a[bx+2]
mov a[bx],ax
cotinue: add bx,2
loop loop2
mov cx,di
loop loop1
ret
main endp
prognam ends
end start
2.小循环中每一次循环的次数减小将最后完成的位置,做为下一次循环的次数.
对下列程序进行以上两点改进.
datarea segment
a dw n dup(?)
datarea ends
prognam segment
main proc far
assume cs:prognam,ds:datarea
start:
push ds
sub ax,ax
push ax
mov ax,datarea
mov ds,ax
mov cx,n
dec cx
loop1: mov cx,n
mov bx,0
loop2: mov ax,a[bx]
cmp ax,a[bx+2]
jge cotinue
xchg ax,a[bx+2]
mov a[bx],ax
cotinue: add bx,2
loop loop2
mov cx,di
loop loop1
ret
main endp
prognam ends
end start