C說話二分查找算法及完成代碼。本站提示廣大學習愛好者:(C說話二分查找算法及完成代碼)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話二分查找算法及完成代碼正文
二分査找也稱折半査找,其長處是查找速度快,缺陷是請求所要査找的數據必需是有序序列。該算法的根本思惟是將所要査找的序列的中央地位的數據與所要査找的元素停止比擬,假如相等,則表現査找勝利,不然將以該地位為基准將所要査找的序列分為閣下兩部門。接上去依據所要査找序列的起落序紀律及中央元素與所查找元素的年夜小關系,來選擇所要査找元素能夠存在的那部門序列,對其采取異樣的辦法停止査找,直至可以或許肯定所要查找的元素能否存在,詳細的應用辦法可經由過程上面的代碼詳細懂得。
#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函數中經由過程前往值來斷定査找能否勝利,假如査找勝利.就打印輸入“査找勝利”的信息,不然輸入“査找掉畋”的信息。
以上就是對二分查找法的具體引見,願望進修 C說話的同窗可以控制。