折半查找取整規(guī)則 C語言中的“折半查找法”是什么?
C語言中的“折半查找法”是什么?半搜索法也稱為二進(jìn)制搜索法。它充分利用了元素之間的順序關(guān)系,采用分治策略,在最壞情況下可以用O(logn)完成搜索任務(wù)。例如,排序后的數(shù)據(jù)是15 12 35 64 78
C語言中的“折半查找法”是什么?
半搜索法也稱為二進(jìn)制搜索法。它充分利用了元素之間的順序關(guān)系,采用分治策略,在最壞情況下可以用O(logn)完成搜索任務(wù)。例如,排序后的數(shù)據(jù)是15 12 35 64 78 89 123 456。如果要查找12,請先將12與上述9個數(shù)字中的中間數(shù)字(64)進(jìn)行比較,12< 64按上述順序排列,因此您找到的數(shù)據(jù)位于前半部分,即15 12 35 64,然后將12與前半部分的中間數(shù)字(12)進(jìn)行比較。這樣,您可以在兩次搜索后找到一半。半搜索的目的是提高搜索效率
c語言中的折半查找法是什么原理?
遞歸,分而治之,其思想是將n個元素分成大致相同數(shù)目的兩半,取a[n/2]與要找到的X進(jìn)行比較,如果X=a[n/2],則找到X,算法結(jié)束。如果X<A[n/2],那么我們只需要繼續(xù)在數(shù)組a的左半部分搜索X(假設(shè)數(shù)組元素按升序排列)。如果X>A[n/2],那么我們只需要在數(shù)組a的右半部分繼續(xù)搜索X。
C語言中怎樣利用折半查找法(二分查找法)找到數(shù)列中的一個數(shù)?
根據(jù)需要,使用二分法在指定的數(shù)組中找到指定的數(shù)字。代碼如下:#include<stdio。H>//在長度為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ù)組長度intaim=17//查找目標(biāo)//輸出搜索結(jié)果,search17array[]:3printf(“search%dinarray[:%dn”,aim,search(array,length,aim))return0}