您好,登錄后才能下訂單哦!
二分査找也稱折半査找,其長處是查找速度快,缺陷是請求所要査找的數據必需是有序序列。該算法的根本思惟是將所要査找的序列的兩頭地位的數據與所要査找的元素停止比擬,假如相等,則表現査找勝利,不然將以該地位為基準將所要査找的序列分為閣下兩局部。接下來依據所要査找序列的起落序紀律及兩頭元素與所查找元素的巨細關系,來選擇所要査找元素能夠存在的那局部序列,對其采取異樣的辦法停止査找,直至可以肯定所要查找的元素能否存在,詳細的運用辦法可經過下面的代碼詳細理解。
#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; }
運轉后果:
-32 12 16 24 36 45 59 98 請輸出所要查找的元素:12 查找勝利
在下面的代碼中,我們勝利地經過二分査找算法完成了查找功用,其完成進程如下圖所示。
二分査找算法的査找進程
在如上圖所示的查找進程中,先將序列兩頭地位的元素與所要査找的元素停止比擬,發現要査找的元素位干該地位的左局部序列中。接下來將mid的右邊一個元素作為 high,持續停止二分査找,這時mid所對應的兩頭元素剛好是所要査找的元素,査找完畢,前往査找元素所對應的下標。在main函數中經過前往值來判別査找能否勝利,假如査找勝利.就打印輸入“査找勝利”的信息,不然輸入“査找掉畋”的信息。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。