今天給分享一下使用C語(yǔ)言實(shí)現(xiàn)二分算法,主要包含以下幾部分內(nèi)容:
- 二分查找算法介紹
- 二分查找算法使用場(chǎng)景
- 二分查找算法代碼實(shí)現(xiàn)
- 二分查找算法實(shí)現(xiàn)過(guò)程
用C語(yǔ)言實(shí)現(xiàn)二分法查找
二分查找也稱(chēng)折半查找(Binary Search),是一種效率較高的查找方法。
有序且不重復(fù)的數(shù)組中的元素的查找。
int findNumIndex(int *arr,int len,int n){ int end = len; int start = 0;
//越界 if(n > *(arr+len-1) || n < *(arr)) { return -1; }
while(1) { int midIdx = (end + start) / 2;
if(start == midIdx && *(arr+midIdx) != n) { return -1; }
if(*(arr+midIdx) == n) { return midIdx; } else if(*(arr+midIdx) > n) { end = midIdx; } else { start = midIdx; } }}
首先,假設(shè)數(shù)組中的元素是按升序排列的,將最中間的數(shù)字和要搜索的數(shù)字進(jìn)行比較,如果兩者相等,則搜索成功;否則,從中間數(shù)字位置將數(shù)組分為兩個(gè)子數(shù)組,前數(shù)組和后數(shù)組,如果中間數(shù)字大于搜索數(shù)字,則進(jìn)一步查找前數(shù)組中的元素,否則在后一個(gè)數(shù)組中進(jìn)行查找。重復(fù)上述過(guò)程,直到找到滿(mǎn)足條件的數(shù)字,則搜索成功,或者直到子表所有的數(shù)字查找完畢還沒(méi)有找到該數(shù)字,此時(shí)搜索不成功。
-
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7604瀏覽量
136692 -
代碼
+關(guān)注
關(guān)注
30文章
4779瀏覽量
68524
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論