今天給分享一下使用C語言實現二分算法,主要包含以下幾部分內容:
- 二分查找算法介紹
- 二分查找算法使用場景
- 二分查找算法代碼實現
- 二分查找算法實現過程
用C語言實現二分法查找
二分查找也稱折半查找(Binary Search),是一種效率較高的查找方法。
有序且不重復的數組中的元素的查找。
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; } }}
首先,假設數組中的元素是按升序排列的,將最中間的數字和要搜索的數字進行比較,如果兩者相等,則搜索成功;否則,從中間數字位置將數組分為兩個子數組,前數組和后數組,如果中間數字大于搜索數字,則進一步查找前數組中的元素,否則在后一個數組中進行查找。重復上述過程,直到找到滿足條件的數字,則搜索成功,或者直到子表所有的數字查找完畢還沒有找到該數字,此時搜索不成功。
-
C語言
+關注
關注
180文章
7614瀏覽量
137712 -
代碼
+關注
關注
30文章
4825瀏覽量
69047
發布評論請先 登錄
相關推薦
Labview實現二分法查找數值區間
如何用C語言實現面向對象編程
如何用C程序解一元三次方程根
基于二分法與移動Sink的無線傳感器網絡數據收集協議
![基于<b class='flag-5'>二分法</b>與移動Sink的無線傳感器網絡數據收集協議](https://file.elecfans.com/web1/M00/47/72/pIYBAFql6xKAQzVFAABAIcEk_R8035.jpg)
如何理解二分查找算法
![如何理解<b class='flag-5'>二分</b><b class='flag-5'>查找</b>算法](https://file1.elecfans.com/web2/M00/82/12/wKgaomQ_Wx-AbECcAAAcrhd3PMg378.jpg)
評論