折半查找也稱二分查找,是一種在有序數組中查找某一特定元素的搜索算法,每一次查找,搜索范圍均縮小一半,效率較高。如果數組是亂序狀態,則應排序,再進行查找。
搜索過程從數組的中間元素開始,如果中間元素正好是要查找的元素,則搜索過程結束;如果某一特定元素大于或者小于中間元素,則在數組大于或小于中間元素的那一半中查找,而且跟開始一樣從中間元素開始比較。如果在某一步驟數組為空,則代表找不到。這種搜索算法每一次比較都使搜索范圍縮小一半 。
總共有n個元素,每次查找的區間大小就是n,n/2,n/4,…,n/ 2 k 2^k 2k,一直到1,其中k就是循環的次數。
由于n/ 2 k 2 ^ k 2k取整后>=1,即令n/ 2 k 2^k 2k=1,可得k=log2n,(是以2為底,n的對數),所以時間復雜度可以表示O()=O(logn)。
二分查找只需要額外存儲三個變量:最大值 ,最小值 和 中點,空間復雜度為常數 O(1)。
優點:比較次數少,查找速度快,平均性能好。
缺點:要求待查表為有序表,且插入刪除困難。
輸入需要查找的元素,我們輸入的是38;left是有序數組最左端0,是最小值,right是有序數組最右端10,是最大值,mid為數組1/2位置,即array[5];
38比array[5] = 19大,因此left等于原mid+1,即array[6] = 26,right不變;新mid為(left+right)/2 = (6+10)/2 = 8;
38比array[8] = 36大,因此left等于上一次mid+1,即array[9] = 38,right不變;新mid為(left+right)/2 = (9+10)/2 = 9;
38等于array[9],mid與left重合, 查找成功,返回數組下標9.
#include<stdio.h>#include<string.h>intbinarySearch(intarray[],intlen,inttarget){intleft=0;intright=len-1;while(left<=right){intmid=(right+left)/2;if(array[mid]==target){returnmid;}elseif(array[mid]<target){left=mid+1;}elseif(array[mid]>target){right=mid-1;}}return-1;}intmain(void){intarray[]={2,3,4,5,15,19,26,27,36,38,45};intkey=0,ret;printf("請輸入需要查找的數字:");scanf("%d",&key);ret=binarySearch(array,sizeof(array)/sizeof(int),key);if(ret<0)printf("查找失敗\n");elseprintf("該數字為數組第%d個元素\n",ret+1);return0;}
運行結果:
請輸入需要查找的數字:38
該數字為數組第10個元素
以上就是關于“C語言折半查找法如何使用”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注本站行業資訊頻道。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
銀河證券交易手續費是多少根據銀河證券官網顯示,銀河證券交易傭金(手續費)收取標準為:不超過成交金額的0.3%,最低5元起,單筆交易傭金不滿5元按5元收取,買賣均收。股票交易傭金是指在股票交易時需要支付的款(查詢面值的話可以通過交易軟件的F10信息,或登錄交易所網站查詢上市公司當時的招股,都能查詢到)舉例:如果投資者在中信證券賬戶買了一只股票,成交數量是100股。銀河證券手續費和傭金比例詳解銀河證券...
黃金價格為什么下跌?1.美元指數開始走強。黃金和美元的關系通常是相反的。貨幣危機結束了黃金失去了作為避險工具的意義,所以很多人放棄了黃金,持有美元。如果美元指數走強黃金的價格可能會下跌。2.需求下降導致黃金價格下降。世界上有三個國家特別喜愛黃金。俄羅斯把黃金作為它的資產儲備,印度把黃金作為它的珠寶,中國買下黃金作為壓箱底傳給后代。如果黃金的需求突然減少黃金的價格就會下跌。如果需求增加黃金價格就會上...
現在的小說都是書友推薦的。經過簡單的整理,這一期禁忌愛情小說出版。又是一段令人心碎的感情路。準備好紙巾哭吧~ ~ ~1.《云虞之歡》作者:芥末綠標簽:兄弟姐妹/無關/浪漫她是他從小疼愛的妹妹,她只是一個妹妹。然而,她對他有不同的感覺。周圍都是別的女人,她終于控制不住地愛上了他。他厭倦了這種感覺,但當她有了自己的男朋友,他又莫名其妙地心碎。明知道不能愛,卻還無緣無故的愛。即使世界對它另眼相看,他們也...