求个二分查找的例子,我快疯了!!

GGJJyangjinhan 2009-05-15 07:25:09
看了几天那书上的例子一点头绪也没有,那例子上还没有解释。

谁能给我个例子(最好有解释),求....

我分不多,就只能给这点了
...全文
221 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
GGJJyangjinhan 2009-05-16
  • 打赏
  • 举报
回复
怎么就这几个人回答?!
goodider 2009-05-15
  • 打赏
  • 举报
回复
当然见过了。是很平常的例子随便GOOGLE一下都有的。
huayangcvj 2009-05-15
  • 打赏
  • 举报
回复
看看
GGJJyangjinhan 2009-05-15
  • 打赏
  • 举报
回复
这个我好像从哪见过........
goodider 2009-05-15
  • 打赏
  • 举报
回复
data segment
arry dw 12,11,22,33,44,55,66,77,88,99,111,222,333
number dw 55 (要找的数字)
low_idx dw ?
high_idx dw ?
data ends
..........
lea di, array (给di赋予地址,初值为0)
mov ax, mumber (number 赋予ax,即55)

cmp ax, [di+2] (ax与第一个元素比较)
ja chk_last (大于往下找)
lea si, [di+2] (si 等于2了)
je exit (相等退出来)
stc
jmp exit
chk_last:
mov si, [di] (si初值变为12)
shl si, 1 (逻辑左移)
addd si, di
cmp ax, [si]
jb search (<继续比较)
je exit (相等推出)
stc
jmp exit (比最大的还大,退出)
search:
mov low_idx, 1
mov bx, [di]
mov high_idx, bx
mov bx, di
mid:
mov cx, low_idx
mov dx, high_idx
cmp cx, dx
ja no_match
add cx, dx
shr cx, 1 (向右移动,等于相加除2)
mov si, cx
shl si ,1
compare:
cmp ax, [bx+si]
je exit (相等退出)
ja higher (否则转到高位)
dec cx
mov high_idx, cx
jmp mid (无条件转到mid)
higher:
inc cx
mov low_idx,cx
jmp mid
no_match:
stc
exit:

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧