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

来源:互联网 发布:mac如何设置用户名 编辑:程序博客网 时间:2024/05/01 20:28
;******************************************TITLE 汇编语言的冒泡排序的使用;******************************************;******************************************;程序平台说明.386.MODEL FLAT,STDCALLOPTION CASEMAP:NONE;******************************************;******************************************;文件包含INCLUDE Irvine32.inc;******************************************;******************************************;数据段的定义.DATAarrayTmp byte 10,12,45,12,45,01,12,78,0strEnter byte 0dh,0ah,0;******************************************;******************************************;代码段的定义.CODEmain 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;  exitmain endpend 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 0
原创粉丝点击