吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何用C語言實現高效查找(二分法)

信盈達 ? 2024-06-04 08:04 ? 次閱讀

今天給分享一下使用C語言實現二分算法,主要包含以下幾部分內容:

  • 二分查找算法介紹
  • 二分查找算法使用場景
  • 二分查找算法代碼實現
  • 二分查找算法實現過程

用C語言實現二分法查找f489a4ba-2205-11ef-bd4a-92fbcf53809c.png

二分查找也稱折半查找(Binary Search),是一種效率較高的查找方法。

f48d8de6-2205-11ef-bd4a-92fbcf53809c.png

f4a93104-2205-11ef-bd4a-92fbcf53809c.png

有序且不重復的數組中的元素的查找。

f4ae4306-2205-11ef-bd4a-92fbcf53809c.png

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; } }}

f4b2438e-2205-11ef-bd4a-92fbcf53809c.png

首先,假設數組中的元素是按升序排列的,將最中間的數字和要搜索的數字進行比較,如果兩者相等,則搜索成功;否則,從中間數字位置將數組分為兩個子數組,前數組和后數組,如果中間數字大于搜索數字,則進一步查找前數組中的元素,否則在后一個數組中進行查找。重復上述過程,直到找到滿足條件的數字,則搜索成功,或者直到子表所有的數字查找完畢還沒有找到該數字,此時搜索不成功。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7614

    瀏覽量

    137712
  • 代碼
    +關注

    關注

    30

    文章

    4825

    瀏覽量

    69047
收藏 人收藏

    評論

    相關推薦

    求助:如何用C語言實現直接尋址

    何用C語言實現直接尋址,就像匯編里面的mov 0x80,0x60
    發表于 05-13 16:39

    Java常用排序算法&程序員必須掌握的8大排序算法+二分法查找

    Java常用排序算法&程序員必須掌握的8大排序算法+二分法查找
    發表于 10-19 19:33

    Labview實現二分法查找數值區間

    二分法是檢索里經常用到的一種方法,可以實現對有序數組進行檢索,本程序通過二分法實現對數據進行區間匹配,并輸出最小匹配區間和匹配區間的索引值,尤其適合多段函數的數值計算。
    發表于 04-18 13:22

    淺析漸近表示二分法

    《算法圖解》NOTE 1 算法的漸近表示以及二分法
    發表于 10-10 10:58

    何用VHDL語言實現幀同步的設計?

    幀同步是什么工作原理?如何用VHDL語言實現幀同步的設計?
    發表于 04-08 06:33

    何用C語言實現面向對象編程

    、組合、多態等面向對象的功能,但C語言有struct和函數指針。我們可以用struct中的數據和函數指針,以此來模擬對象和類的行為。所以在正式開始設計模式前,先看看如何用C
    發表于 07-12 07:24

    何用C程序解一元三次方程根

    摘要:本文介紹了高等數學的近似計算方法中切線二分法的思想,再利用其思想結合C程序設計語言,編寫出了求一元三次方程根的程序,該程序稍加修改,即可成為求更高次方
    發表于 06-21 09:19 ?61次下載

    C語言教程之二分查找

    C語言教程之二分查找,很好的C語言資料,快來學習吧。
    發表于 04-22 11:06 ?0次下載

    基于C語言二分查找排序源代碼

    本文檔內容介紹了C語言歸并、選擇、直接插入、希爾、冒泡、快速、堆排序與順序、二分查找排序源代碼,分享給大家供大家參考。
    發表于 01-04 11:24 ?1次下載

    基于二分法與移動Sink的無線傳感器網絡數據收集協議

    傳感器節點能量的有限性,嚴重制約了無線傳感器網絡的推廣與發展。因此,如何改善傳感器節點能源的利用率、節約能耗以及提高整個網絡的生存周期成為該領域研究者面臨的挑戰之一。 為延長網絡生存周期,提出一種基于二分法與移動Sink的無線傳感器網絡數據收集協
    發表于 03-12 10:43 ?0次下載
    基于<b class='flag-5'>二分法</b>與移動Sink的無線傳感器網絡數據收集協議

    圖像處理算法之二分查找

    二分查找又稱折半查找,優點是比較次數少,查找速度快,平均性能好;其缺點是要求待查表為有序表,且插入刪除困難。
    的頭像 發表于 03-17 11:29 ?4903次閱讀

    詳解C語言二分查找算法細節

    我相信對很多讀者朋友來說,編寫二分查找的算法代碼屬于玄學編程,雖然看起來很簡單,就是會出錯,要么會漏個等號,要么少加個 1。
    的頭像 發表于 06-22 09:05 ?2841次閱讀
    詳解<b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>二分</b><b class='flag-5'>查找</b>算法細節

    筑基_C_5_對數組的二分查找

    C語言泛型編程,實現對數組中某元素的二分查找
    發表于 12-06 10:21 ?9次下載
    筑基_<b class='flag-5'>C</b>_5_對數組的<b class='flag-5'>二分</b><b class='flag-5'>查找</b>

    如何理解二分查找算法

    本文就來探究幾個最常用的二分查找場景:尋找一個數、尋找左側邊界、尋找右側邊界。 而且,我們就是要深入細節,比如不等號是否應該帶等號,mid 是否應該加一等等。分析這些細節的差異以及出現這些差異的原因,保證你能靈活準確地寫出正確的
    的頭像 發表于 04-19 11:10 ?666次閱讀
    如何理解<b class='flag-5'>二分</b><b class='flag-5'>查找</b>算法

    FPGA設計中二分法查表算法的實現

    二分查找算法是在軟件中廣泛應用的一種算法,那么在FPGA的設計中是否可以用這種算法呢?什么場景下會可能用到這種算法呢?
    的頭像 發表于 09-06 18:26 ?1133次閱讀
    FPGA設計中<b class='flag-5'>二分法</b>查表算法的<b class='flag-5'>實現</b>
    娱乐城百家乐高手| 三亚百家乐官网的玩法技巧和规则 | 十三张娱乐城开户| 百家乐出千的高科技| 百家乐官网博娱乐网提款速度快不| 墨竹工卡县| 永利高娱乐场| 真人百家乐策略| 百家乐官网庄闲排列| 海安县| 大发888开户注册哪家好| 2024九紫离火| 在线百家乐官网纸牌游戏| 新澳博娱乐| 百家乐赌博现金网平台排名| 欧凯百家乐官网的玩法技巧和规则| 百家乐官网注码管理| 大发888好吗| 百家乐变牌器| 百家乐美女荷官| 百家乐官网千术手法| 真人百家乐官网打法| 德州扑克 玩法| 澳门百家乐赌场娱乐网规则| 百家乐视频金币| 百家乐官网可以出千吗| 澳门百家乐官网加盟| qq德州扑克下载| 鑫鑫百家乐的玩法技巧和规则| 百家乐中B是什么| 美女百家乐官网的玩法技巧和规则| 百家乐官网包赢| 网上百家乐游戏| 水果机下载| 沙龙百家乐娱乐| 百家乐投注怎么样| 百家乐官网具体怎么收费的| 肯博88国际网| 大发888博彩官方下载| 网页百家乐游戏下载| 水晶百家乐筹码|