彙編 折半查詢

2021-09-19 17:00:55 字數 1187 閱讀 8140

data segment

shuzu db 1,5,8,14,15,16,17,18,19,20, 21 dup(18h)

ends

code segment

assume: cs:code,ds:data

start:

mov ax,data

mov ds,ax

mov es,ax

mov ah,1 ;輸入第一位

int 21h

mov ah,10

sub al,'0' ;存放的是ascii碼,減0變成十進位制

mul ah ;第1位乘10才是十位

mov dh,al ;先把十位放到dh

mov ah,1 ;輸入第二位

int 21h

sub al,'0'

add dh,al ;十位和個位相加,放到dh中

lea bx,shuzu

mov cx,10 ;cx放的是最大數的下標

mov ax,0 ;ax放最小數的下標

l1: cmp ax,cx ;如果ax比dx大,說明最小數的下標移動到最大的後面去了

jg l3 ;沒有找到

mov di,ax

add di,cx

sar di,1 ;di是中間數的座標,(ax+cx)/2

cmp dh,shuzu[bx+di]

jz l4 ;找到了該字元

cmp dh,shuzu[bx+di]

jb l2 ;比中間數小的情況

add di,1 ;比中間數大的情況,最小的下標加1再乘2

mov ax,di

jmp l1

l2: sub di,1 ;類似最大的下標減1再除以2

mov cx,di ;實質是最大的下標跳到中間

jmp l1

l3: mov dl,'n'

jmp l5 ;再結束

l4: mov dl,'y'

l5: mov ah,2

int 21h

ends

end start

查詢 折半查詢

折半查詢 int search keytype key,int n,keytype k return 1 查詢失敗,返回 1 在演算法中,n表示記錄的個數。key表示要查詢的關鍵字。key為關鍵字順序表,每個元素都是對應記錄的關鍵字。例如key 0 為第0個記錄的關鍵字。如果每條記錄的資訊與它的關鍵...

查詢之折半查詢

二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表分成前 後...

查詢之折半查詢

折半查詢又稱二分查詢,適用有序的順序表。附 筆試考察查詢,這個是經典查詢法 基本思路 首先給定值key與表中中間位置元素的關鍵字,若相等則查詢成功,返回位置。若不等,則所需查詢的元素只能在中間元素外的前半部分或後半部分中。縮小範圍,遞迴查詢。2.折半查詢的 int binary search seq...