c語言二分法查找數(shù)組元素 C語言,二分法查找次數(shù)公式怎么推導(dǎo)?
C語言,二分法查找次數(shù)公式怎么推導(dǎo)?二進(jìn)制搜索對(duì)于具有n個(gè)元素的有序數(shù)組,可以通過繪制二叉決策樹來分析要分析的比較數(shù)。二叉決策樹的高度為[log2(n)]1級(jí),這是二叉搜索的最大比較次數(shù)。例如,如果n
C語言,二分法查找次數(shù)公式怎么推導(dǎo)?
二進(jìn)制搜索對(duì)于具有n個(gè)元素的有序數(shù)組,可以通過繪制二叉決策樹來分析要分析的比較數(shù)。二叉決策樹的高度為[log2(n)]1級(jí),這是二叉搜索的最大比較次數(shù)。例如,如果n=1000,則最大比較次數(shù)為[log2(1000)]1=9,1=10。如果要計(jì)算平均比較次數(shù),則需要分析二叉決策樹中的每個(gè)節(jié)點(diǎn)。第一級(jí)比較一次,第二級(jí)比較兩次,第三級(jí)比較三次,以此類推,將每個(gè)節(jié)點(diǎn)的比較次數(shù)相加,然后節(jié)點(diǎn)數(shù)(元素?cái)?shù))就是平均比較次數(shù)。這里,假設(shè)搜索是在等概率條件下進(jìn)行的。例如:有一個(gè)由九個(gè)元素組成的有序數(shù)組,每個(gè)元素用1,2,3。。。8, 9. 然后二叉決策樹如下:如圖所示,如果要查找的元素位于第五個(gè)位置,則只需進(jìn)行一次比較即可找到它。如果找到第九個(gè)元素,就需要四個(gè)比較。該算法分別比較第五、第七、第八和第九個(gè)元素。因此,平均比較次數(shù)如下:你能理解這個(gè)分析嗎?希望能對(duì)你有所幫助。
C語言中怎樣利用折半查找法(二分查找法)找到數(shù)列中的一個(gè)數(shù)?
根據(jù)要求,使用二分法在指定的數(shù)組中查找指定的數(shù)字。代碼如下:#include<stdio。H>//在長(zhǎng)度為len的數(shù)組a中查找n,如果找到則返回?cái)?shù)組下標(biāo),并返回-1intsearch(inta[]intlen,INTN){intindex=-1intleft=0,right=len,mid=(left)}right)/2while(left<=right){if(n==a[mid]){index=midbreak}elseif(n>a[mid]){left=mid 1mid=(left right)/2}else{right=mid-1mid=(left right)/2}returnindex}intmain(){intarray[]={5、8、13、17、23、25、29、50、53}//數(shù)組intlength=9//數(shù)組長(zhǎng)度intaim=17//查找目標(biāo)//輸出搜索結(jié)果,search17array[]:3printf(“search%dinarray[:%dn”,aim,search(array,length,aim))return0}
#注意我對(duì)代碼的評(píng)論。請(qǐng)注意,二進(jìn)制搜索是在升序數(shù)組上執(zhí)行的。。