例5.将正数n插入一个已整序的正数字数组 (1)算法 n<Ki,则Ki下移一个单元 nKi,则插入K的下一单元,程序结束 (2)边界情况: nKn,则插入最后一个单元 n<K1,则K1~Kn后移,n插入第一单元 3)循环控制: 计数控制:元素个数=(末址一首址)/2+1 ●地址边界控制:结束地址为 array head ●特征值控制:具有区别特征的值,如一1(-1<n<K1)
11 例5. 将正数 n 插入一个已整序的正数字数组 (1) 算法: n<Ki, 则Ki下移一个单元 n≥Ki, 则插入Ki的下一单元,程序结束 (2) 边界情况: n≥Kn, 则插入最后一个单元 n<K1, 则K1~Kn后移,n插入第一单元 (3) 循环控制: ●计数控制:元素个数=(末址-首址)/2+1 ●地址边界控制:结束地址为array_head ●特征值控制:具有区别特征的值,如-1(-1<n<K1)
例5.将正数n插入一个已整序的正数字数组 dw array_head dw3,5,15,23,37,49,52,65,78,99 array_end dw 105 dw 32 X mov ax n array _head mov array_ head-2, Offffh mov si. 0 15 compare 23 cmp ax, array_end [si] 37 Jge Insert 49 mov bx, array_end [si] 52 mov array_end [si+21, bx 65 sub si.2 78 jmp short compare 99 Insert array_end+105 mov array_end [si+2], ax n 32
12 x dw ? array_head dw 3,5,15,23,37,49,52,65,78,99 array_end dw 105 n dw 32 例5. 将正数 n 插入一个已整序的正数字数组 …… mov ax, n mov array_head-2, 0ffffh mov si, 0 compare: cmp ax, array_end [si] jge insert mov bx, array_end [si] mov array_end [si+2], bx sub si, 2 jmp short compare Insert : mov array_end [si+2], ax …… 3 5 15 23 37 49 52 65 78 99 105 32 -1 array_head→ array_end→ n → x →
例6.将首地址为A的字数组从小到大排序 (气泡算法,多重循环)32,85,16,15,8 比较遍数 序号地址数 2 32 32 16 35 485 2A+285 16 8 3A+416 15 58 16 16 4A+615 8 32 3232 5A+88 85 858585
13 例6 . 将首地址为A的字数组从小到大排序 (气泡算法,多重循环) 32,85,16,15, 8 序号 地址 数 比 较 遍 数 1 2 3 4 1 A 32 2 A+2 85 3 A+4 16 4 A+6 15 5 A+8 8 32 16 15 8 85 16 15 8 32 85 15 8 16 32 85 8 15 16 32 85
mov CX. 5 元素个数 dec 比较遍数 loop1 mov di,cX;比较次数 mov bx. 0 oop. mov ax,A[bx];相邻两数 cmp ax,Abx+2];比较 jle continue xchg ax,A[bx+2];交换位置 mov Albxl, ax continue: dd bx. 2 loop loop2 mov Cx, di oopoop
14 mov cx, 5 ;元素个数 dec cx ;比较遍数 loop1: mov di, cx ;比较次数 mov bx, 0 loop2: mov ax, A[bx] ;相邻两数 cmp ax, A[bx+2] ; 比较 jle continue xchg ax, A[bx+2] ;交换位置 mov A[bx], ax continue: add bx, 2 loop loop2 mov cx, di loop loop1
Q2.分支程序设计 case 1 case 2 case n case 1 case 2 case n CASE结构 IF-THEN-ELSE结构 (1)逻辑尺控制 (2)条件控制 (3)地址跳跃表(值与地址有对应关系的表)
15 2. 分支程序设计 … case 1 case 2 case n ? ? case 1 case 2 case n CASE 结构 IF-THEN-ELSE 结构 (1) 逻辑尺控制 (2) 条件控制 (3) 地址跳跃表(值与地址有对应关系的表)