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...