二分搜索(C语言)
任務(wù)描述
本關(guān)任務(wù):一組從小到達(dá)排列的整數(shù),編寫(xiě)一個(gè)能完成二分搜索的函數(shù)。
編程要求
根據(jù)提示,在右側(cè)編輯器補(bǔ)充代碼,其中A是待搜索的線性表,start和end定義搜索范圍的起始和終止元素下標(biāo),x是待搜索的元素值。
如果在A[start]和A[end]之間找到x,則返回其下標(biāo)k,否則返回-1.
測(cè)試用例
輸入:A[]={1,2,3,4,5},start=0, end=4, x=2
返回值:1
解析:
因?yàn)槭怯行蛘蚺帕械臄?shù)組,每次取數(shù)組的中間位置。當(dāng)目標(biāo)值小于中間值時(shí),對(duì)前半部分進(jìn)行搜索,end變?yōu)橹虚g位置,當(dāng)目標(biāo)值大于中間值時(shí),對(duì)后半部分進(jìn)行搜索,start的值變?yōu)橹虚g值+1,因?yàn)槭窍蛳氯≌?#xff0c;想要全部遍歷,start需要+1。判出條件,找到目標(biāo)值或start值大于end值即可。
int BinarySearch(int A[], int start, int end, int x){ /***********以下編寫(xiě)你的代碼********************/int bio = (start + end) / 2;if(x < A[bio]){ # 前半段判斷if(start <= end){ # 終止判斷BinarySearch(A, start, ((start + end) / 2), x);}else{return -1;}}else if(x > A[bio]){ # 后半段判斷if(start <= end){ # 終止判斷BinarySearch(A, ((start + end) / 2 + 1), end, x);}else{ return -1;}}else # 找到目標(biāo)值return bio; # 返回下標(biāo)/**********************************************/ }總結(jié)
- 上一篇: 电脑返回桌面键盘快捷键是哪个
- 下一篇: 合并排序(C语言)