二分查詢又稱折半查詢,首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。優點是比較次數少,查詢速度快,平均效能好,占用系統記憶體較少;其缺點是要求待查表為有序表。
在有序的陣列中查詢指定元素的位置,此處我們舉乙個例子,此處假設這個陣列是公升序的,例:。
這裡假設我們要找的是2
根據上述二分查詢的定義,第一次查詢的時候,[0,6],取中間位置的下標3,元素4。然後用我們要查詢的元素2與元素4作比較,2<4,所以第一次查詢我們把元素4,5,6,7都排除了。
第二次查詢,待查詢區間是[0,2],再取中間位置的下標1,元素2。這裡中間位置的元素2與我們要找的元素2相同,所以找到了。
同上,當我們要找的元素不在這個陣列中的時候,使用同樣的方法查詢,如果到最後都找不到,則輸出沒找到!
C語言 二分查詢
二分查詢有序陣列中查詢具體某個數 條件 陣列為有序陣列 公升序或降序 查詢的思想 在有序陣列中查詢具體某個數,如果有,輸出該數所對應的下標 如果沒有,輸出未找到.具體思想 若為公升序排列的陣列,取陣列中間元素與待查詢的數比較,若待查詢的數小於中間元素,則在陣列左半部分查詢 若待查詢的數大於中間元素,...
C語言折半查詢(二分查詢)
定義 對使用者輸入的數是否在已經按順序定義好的一組數上進行查詢 思想 定義好的一組數必須按順序排序,一般從小到大排序 將一組數分為兩個部分 low指第乙個數,mid指中間乙個數,high指第最後乙個數 把查詢數n與mid比較 如果n mid,說明在mid右側,low的位置發生改變,除去當時low本身...
c語言 二分查詢(折半查詢)
a 你的新鞋子好炫酷,多少錢買的呀?b 在100 300之間,你猜一下咯,每次我只告訴你猜大了還是猜小了,直到你猜對為止,看看你能不能很快猜出來。a 小夥伴在生活中有沒有和好朋友玩過類似的遊戲呢,不知道接下來你會選擇何種方式去猜呢?如果從100開始乙個乙個往後試,就顯得稍稍有點無腦了,每次猜測的時候...