【8086汇编】基础排序之直接插入排序
来源:互联网 发布:网络诈骗案一般关多久 编辑:程序博客网 时间:2024/06/02 06:13
直接插入排序是一种比较简单的排序。
原理是:
从第二个数开始,依次把每个数当作选定数,在选定数的前面,通过比较大小的方式找到选定数的正确位置,
把该位置之后到选定数之间的数均向后移一位,再通过交换,将选定数放入属于他的位置中
循环上述操作直到对除第一位以外的所有数都操作了一边,即完成排序。
下面我们来看看相应的汇编代码:
DATAS SEGMENT ary dw 2,48,51,21,36,19,14,16,12,33 count dw 20DATAS ENDSSTACKS SEGMENT dw 20 dup(0)STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX mov bx,2;bx记录操作次数,从第二个数开始操作beginer: cmp bx,count jnb exit;超出比较次数则跳转 mov ax,ary[bx];用ax记录当前正在操作的数 cmp ax,ary[bx-2] jnb tonext;如果该数比前一个数都大,则不用继续操作了cando: mov di,bx sub di,2acj: cmp ax,ary[di] jnb chang mov dx,ary[di] mov ary[di+2],dx;前面的数依次往后移 sub di,2 cmp di,0 jb chang;di<0,即操作到第一个数则跳出循环 jmp acj;没找到正确位置,则返回继续循环chang:;找到该数应放的位置,进行交换 mov ary[di+2],ax;a[j+1]=a[j]tonext: add bx,2;第二个数操作完,开始操作下一个数 jmp beginer exit: MOV AH,4CH INT 21HCODES ENDS END START
从代码可以看出,这也是一个复杂度为O(n^2)的排序算法,
且因为两个一样的数排序之后相对位置不变,所以也是一个具有稳定性的算法。
(如有错误,欢迎指出)
阅读全文
0 0
- 【8086汇编】基础排序之直接插入排序
- 【基础排序】直接插入排序
- 算法基础之----直接插入排序
- 排序之直接插入排序
- 排序之直接插入排序
- 排序之直接插入排序
- 排序之直接插入排序
- 排序之直接插入排序
- 排序之直接插入排序
- 排序之直接插入排序
- 排序之直接插入排序
- 排序之直接插入排序
- 插入排序之直接插入
- 【8086汇编】基础排序之冒泡排序
- 【8086汇编】基础排序之选择排序
- 【8086汇编】基础排序之希尔排序
- 插入排序之直接插入排序
- 插入排序之----直接插入排序
- 笔记:清除浮动方法
- About博主
- java代码中调用存储过程导致的事务失效
- 02_核心概念--06_事件
- 自定义TitleBar
- 【8086汇编】基础排序之直接插入排序
- C语言-变量的类型
- synchronized 线程同步的三种方法
- 利用File获取磁盘信息
- MySQL安装教程
- tomcat8 启动慢问题
- 在使用Mac终端的时候出现Permission denied的问题
- [SYZOI Round1]滑稽♂树
- PG常见错误集合