成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

c語(yǔ)言數(shù)組的折半查找法 C語(yǔ)言折半查找法詳細(xì)代碼(假如有10個(gè)已排好序的數(shù))?

C語(yǔ)言折半查找法詳細(xì)代碼(假如有10個(gè)已排好序的數(shù))?#include<stdio.h>int seek(int * pArr,int low,int high,int num)void ma

C語(yǔ)言折半查找法詳細(xì)代碼(假如有10個(gè)已排好序的數(shù))?

#include<stdio.h>

int seek(int * pArr,int low,int high,int num)

void main()

{

int Arr[]={1,2,3,4,5,6,7,8,9,10}

int find,num

printf("input a num to be found.n")

scanf("%d",&num)

find = seek(Arr,0,9,num)

if (find == -1) printf("num=%d not found!n",num)

else printf("num has been found!nArr[%d] = %dn",find,Arr[find])

}

int seek (int *pArr,int low,int high,int num)

{//pArr 為數(shù)組名,該數(shù)組必須是排好序了(這是二分法的要求),這里按從小到大排序

int mid

mid = (low high)/2

if ((low>=high)&&(pArr[mid]!=num))

return -1

else

{

if (pArr[mid]==num)

return mid

else if (pArr[mid]>num)

high = mid 1//中間數(shù)字比要查的數(shù)還大,說(shuō)明可能在中間段以前

else

low = mid-1//同上,可能在中間段以后

return seek(pArr,low,high,num) //遞歸

}

}

C語(yǔ)言中的“折半查找法”是什么?

折半查找法也稱為二分查找法,它充分利用了元素間的次序關(guān)系,采用分治策略,可在最壞的情況下用O(log n)完成搜索任務(wù)。 例如排序后的數(shù)據(jù)是1 5 12 35 64 78 89 123 456 你要查找12,首先用12跟上面排好順序的9個(gè)數(shù)中間那個(gè)比較(64),12<64,因此你查找的數(shù)據(jù)在前半部分,即1 5 12 35 64,再用12跟前半部分中間那個(gè)數(shù)比較(12),這樣找了2次就找到了 折半查找的目的是提高查找的效率!

C語(yǔ)言中怎樣利用折半查找法(二分查找法)找到數(shù)列中的一個(gè)數(shù)?

根據(jù)需求,用二分法查找指定數(shù)組中的指定數(shù)字,代碼如下:#include<stdio.h>//在長(zhǎng)度為len的數(shù)組a中尋找n,找到就返回?cái)?shù)組下標(biāo),沒(méi)找到就返回-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é)果,Search17inarray[]:3printf("Search%dinarray[]:%dn",aim,search(array,length,aim))return0}