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

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

3天內不再提示

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

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

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

  • 二分查找算法介紹
  • 二分查找算法使用場景
  • 二分查找算法代碼實現(xiàn)
  • 二分查找算法實現(xiàn)過程

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

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

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

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

有序且不重復的數(shù)組中的元素的查找。

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

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

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

    關注

    180

    文章

    7594

    瀏覽量

    135856
  • 代碼
    +關注

    關注

    30

    文章

    4722

    瀏覽量

    68229
收藏 人收藏

    評論

    相關推薦

    求助:如何用C語言實現(xiàn)直接尋址

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

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

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

    Labview實現(xiàn)二分法查找數(shù)值區(qū)間

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

    淺析漸近表示二分法

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

    何用VHDL語言實現(xiàn)幀同步的設計?

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

    何用C語言實現(xiàn)面向對象編程

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

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

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

    C語言教程之二分查找

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

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

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

    基于二分法與移動Sink的無線傳感器網(wǎng)絡數(shù)據(jù)收集協(xié)議

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

    圖像處理算法之二分查找

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

    詳解C語言二分查找算法細節(jié)

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

    筑基_C_5_對數(shù)組的二分查找

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

    如何理解二分查找算法

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

    FPGA設計中二分法查表算法的實現(xiàn)

    二分查找算法是在軟件中廣泛應用的一種算法,那么在FPGA的設計中是否可以用這種算法呢?什么場景下會可能用到這種算法呢?
    的頭像 發(fā)表于 09-06 18:26 ?947次閱讀
    FPGA設計中<b class='flag-5'>二分法</b>查表算法的<b class='flag-5'>實現(xiàn)</b>