汇编语言的冒泡排序和二分法

;******************************************
TITLE 汇编语言的冒泡排序的使用
;******************************************



;******************************************
;程序平台说明
.386
.MODEL FLAT,STDCALL
OPTION CASEMAP:NONE
;******************************************

;******************************************
;文件包含
INCLUDE Irvine32.inc
;******************************************

;******************************************
;数据段的定义
.DATA
arrayTmp byte 10,12,45,12,45,01,12,78,0
strEnter byte 0dh,0ah,0
;******************************************


;******************************************
;代码段的定义
.CODE
main proc
  ;外部循环次数设定
  MOV ECX,SIZEOF arrayTmp
  ;外部循环索引设定
  XOR ESI,ESI
  L1:
     PUSH ECX;
	 ;内部循环索引的起始值
	 MOV EDI,ESI
	 ;内存循环的次数设定
	 MOV ECX,SIZEOF arrayTmp
	 SUB ECX,EDI
	 ;开始内部循环
	   L2:
		  XOR EAX,EAX
	      MOV AL,arrayTmp[esi]	     
		  CMP al,arrayTmp[edi]
		  JB L3;
		  ;进行交换操作
		  XCHG AL,arrayTmp[EDI]
		  MOV arrayTmp[esi],AL
		  L3:
		    ;内部循环索引自增
		    inc edi
	  loopd L2;
	  pop ecx
	  ;外部循环索引自增
	  inc esi
  loopd L1;   
  ;开始查看结果,循环输出
  mov ecx,sizeof arrayTmp
  xor esi,esi
  L4:
     movzx eax,arrayTmp[esi]
	 call WriteInt
	 ;输出换行
	 mov edx,offset strEnter
	 call WriteString
	 inc esi
  loopd L4;

  exit
main endp
end main
;******************************************

PS:这是冒泡排序的实现,各步骤已经很明显了;

然后对应的C++实现的过程是

for(int i=0;i<9;i++)
   for(int j=i;j<9;j++)
    {
       if(arrayTmp[i]>arrayTmp[j])
        {
              byte tmp=arrayTmp[i];
              arrayTmp[i]=arrayTmo[j];
              arrayTmp[j]=tmp;
        }
    }


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

世纪殇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值