找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2905|回復: 4
打印 上一主題 下一主題
收起左側

二分查表法程序,高效查找數(shù)據(jù),溫度檢測很實用

[復制鏈接]
跳轉到指定樓層
樓主
ID:149876 發(fā)表于 2020-11-12 15:56 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
用最少的運算次數(shù)找出數(shù)據(jù)位置,基礎思路。1000個數(shù)據(jù),第一次判定是前500還是后500,第二次是前250還是后250.這樣1000個數(shù)據(jù)很快就可以查完。

uint8 FineTab(uint16 *a,uint8 TabLong,uint16 data)//表中數(shù)據(jù)從大到小  

{  

    uint8 st,ed,m ;  

    uint8 i ;  

  

    st = 0 ;  

    ed = TabLong-1 ;  

    i = 0  ;  

  

    if(data >= a[st]) return st ;  

    else if(data <= a[ed]) return ed ;  

  

    while(st < ed)  

    {  

        m = (st+ed)/2 ;  

  

        if(data == a[m] ) break ;  

        if(data < a[m] && data > a[m+1]) break ;  


        if(data > a[m])  ed = m ;                     

        else st = m ;     

         

        if(i++ > TabLong) break ;  

    }  


    if(st > ed ) return 0 ;   
    return m ;  
}

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:156220 發(fā)表于 2020-11-12 18:31 | 只看該作者
高效解決問題
回復

使用道具 舉報

板凳
ID:592807 發(fā)表于 2020-11-13 14:23 | 只看該作者
你的代碼有很大的局限性,可以參考但不能直接用:首先你這個數(shù)據(jù)早就按大小順序排列好了。其次你的2分法如果數(shù)據(jù)總數(shù)是單數(shù)怎么處理,也沒有明確方法。
回復

使用道具 舉報

地板
ID:149876 發(fā)表于 2020-11-24 14:09 | 只看該作者
1.這個你在做實際項目時就能體會到用處,特別是非線性傳感器,需要數(shù)據(jù)庫修正。
2.這個不分奇數(shù)偶數(shù)。
回復

使用道具 舉報

5#
ID:848290 發(fā)表于 2020-11-25 10:43 | 只看該作者
贊,學校師傅讓我們做一個溫度數(shù)據(jù)采集檢測分析的項目,通過查表方式得到溫度,用二分法,能快速提高查表效率

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表