溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C言語二分查找(折半查找)算法及代碼

發(fā)布時間:2020-07-23 17:32:16 來源:網(wǎng)絡 閱讀:411 作者:yuw2016 欄目:網(wǎng)絡安全

二分査找也稱折半査找,其長處是查找速度快,缺陷是請求所要査找的數(shù)據(jù)必需是有序序列。該算法的根本思惟是將所要査找的序列的兩頭地位的數(shù)據(jù)與所要査找的元素停止比擬,假如相等,則表現(xiàn)査找勝利,不然將以該地位為基準將所要査找的序列分為閣下兩局部。接下來依據(jù)所要査找序列的起落序紀律及兩頭元素與所查找元素的巨細關(guān)系,來選擇所要査找元素能夠存在的那局部序列,對其采取異樣的辦法停止査找,直至可以肯定所要查找的元素能否存在,詳細的運用辦法可經(jīng)過下面的代碼詳細理解。

			#include <stdio.h> binarySearch(int a[], int n, int key){ int low = 0; int high = n - 1; while(low<= high){ int mid = (low + high)/2; int midVal = a[mid]; if(midVal<key) low = mid + 1; else if(midVal>key) high = mid - 1; else return mid; } return -1; } int main(){ int i, val, ret; int a[8]={-32, 12, 16, 24, 36, 45, 59, 98}; for(i=0; i<8; i++) printf("%d\t", a[i]); printf("\n請輸人所要查找的元素:"); scanf("%d",&val); ret = binarySearch(a,8,val); if(-1 == ret) printf("查找掉敗 \n"); else printf ("查找勝利 \n"); return 0; }

運轉(zhuǎn)后果:

-32    12    16    24    36    45    59    98
請輸出所要查找的元素:12
查找勝利

在下面的代碼中,我們勝利地經(jīng)過二分査找算法完成了查找功用,其完成進程如下圖所示。

C言語二分查找(折半查找)算法及代碼
二分査找算法的査找進程


在如上圖所示的查找進程中,先將序列兩頭地位的元素與所要査找的元素停止比擬,發(fā)現(xiàn)要査找的元素位干該地位的左局部序列中。接下來將mid的右邊一個元素作為 high,持續(xù)停止二分査找,這時mid所對應的兩頭元素剛好是所要査找的元素,査找完畢,前往査找元素所對應的下標。在main函數(shù)中經(jīng)過前往值來判別査找能否勝利,假如査找勝利.就打印輸入“査找勝利”的信息,不然輸入“査找掉畋”的信息。


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI