日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

理论基础 —— 查找 —— 二分查找

發(fā)布時間:2025/3/17 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 理论基础 —— 查找 —— 二分查找 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

【概述】

二分查找又稱折半查找,其要求線性表中的記錄必須按關(guān)鍵碼有序,且必須采用順序存儲。

其基本思想是:用給定值 k 先與中間結(jié)點(diǎn)的關(guān)鍵字比較,中間結(jié)點(diǎn)把線形表分成兩個子表,若相等則查找成功;若不相等,再根據(jù) k 與該中間結(jié)點(diǎn)關(guān)鍵字的比較結(jié)果確定下一步查找哪個子表,這樣遞歸進(jìn)行,直到查找到或查找結(jié)束發(fā)現(xiàn)表中沒有這樣的結(jié)點(diǎn)。

【實(shí)現(xiàn)】

1.查找元素

int binarySearch(int a[], int value, int n) {int left=0, right=n-1;int res = -1;while (left <= right) {int mid = (left + right) / 2; //設(shè)置中值if (a[mid] == value) { //查找到符合元素valueres = mid;return res;} else if (a[mid] < value) //value在右邊部分left = mid + 1; //調(diào)整集合下界else //value在左邊部分right = mid - 1; //調(diào)整集合上界}return res; //若未找到value,則res= -1 }

圖例

2.查找連續(xù)函數(shù)

bool cal(int x){... } int BinarySearch(double low,double high){//low為區(qū)間下界,high為區(qū)間上界double left,right,mid;left=low;//設(shè)置當(dāng)前查找區(qū)間上界的初值right=high;//設(shè)置當(dāng)前查找區(qū)間下界的初值while(right-left>1.0e-6){mid=(right+left)/2;//設(shè)置中值if(cal(mid)<x)//函數(shù)結(jié)果小于帶查找的值left=mid;//說明在右邊部分,調(diào)整集合下界elseright=mid;//說明在左邊部分,調(diào)整集合上界}return mid; }

【二分查找判定樹】

對表中每個記錄的查找過程,可用二叉樹來描述,樹中的每個結(jié)點(diǎn)對應(yīng)有序表中的一個記錄,結(jié)點(diǎn)的值為該記錄在表中的位置,常將這個描述二分查找過程的二叉樹稱為二分查找判定樹

1.構(gòu)造

當(dāng) n=0 時,折半查找判定樹為空

當(dāng) n>0 時,折半查找判定樹的根結(jié)點(diǎn)為 mid=(n+1)/2,根結(jié)點(diǎn)的左子樹是與有序表 r[1] ~ r[mid-1] 相對應(yīng)的折半查找判定樹,根結(jié)點(diǎn)的右子樹是與 r[mid+1] ~ r[n] 相對應(yīng)的折半查找判定樹。?

2.性質(zhì)

  • 任意兩棵折半查找判定樹,若它們的結(jié)點(diǎn)個數(shù)相同,則它們的結(jié)構(gòu)完全相同
  • 具有n個結(jié)點(diǎn)的折半查找樹的高度為?
  • 任意結(jié)點(diǎn)的左右子樹中結(jié)點(diǎn)個數(shù)最多相差 1
  • 任意結(jié)點(diǎn)的左右子樹的高度最多相差 1
  • 任意兩個葉子所處的層次最多相差 1

【復(fù)雜度分析】

最壞情況下,關(guān)鍵碼比較次數(shù)為 log2(n+1),時間復(fù)雜度為 O(logn)

在表中查找任一記錄的過程,即是折半查找判定樹中從根結(jié)點(diǎn)到該記錄結(jié)點(diǎn)的路徑,和給定值的比較次數(shù)等于該記錄結(jié)點(diǎn)在樹中的層數(shù)。

具有 n 個結(jié)點(diǎn)的二分查找判定樹的深度為?,因此當(dāng)查找成功時,所進(jìn)行的關(guān)鍵碼比較次數(shù)至多為?,而查找不成功時,就是走了一條從根結(jié)點(diǎn)到外部結(jié)點(diǎn)的路徑,和給定值進(jìn)行的關(guān)鍵碼的比較次數(shù)等于該路徑上內(nèi)部結(jié)點(diǎn)的個數(shù),即失敗情況下的平均查找長度等于樹的高度。

以深度為 k 的滿二叉樹為例,其深度為:,樹上的第 i 層有??個結(jié)點(diǎn),假設(shè)表中的每條記錄查找概率相等,即:

則有:

故平均時間復(fù)雜度為:O(logn)

總結(jié)

以上是生活随笔為你收集整理的理论基础 —— 查找 —— 二分查找的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产强伦人妻毛片 | 国产在线精品视频 | 8x8x最新网址| 95视频在线观看 | 喷水在线观看 | 国产精品成人免费看片 | v8888av | 天堂少妇 | 最新中文字幕av专区 | 婷婷一区二区三区四区 | 日韩伊人久久 | 国产精品99久久久精品无码 | 精产国品一区二区 | 黄色在线免费网站 | 少妇被爽到高潮动态图 | 久久久久亚洲av成人无码电影 | 亚洲天堂日韩av | 亚洲第一黄色片 | 亚洲精品a级 | 91美女片黄在线观看游戏 | 国产成人无码a区在线观看视频 | 亚洲AV无码成人精品区先锋 | 日韩精品xxx | 黄色av免费播放 | 日韩中文字幕一区二区三区 | 伊人网视频在线观看 | 婷婷综合亚洲 | 在线视频污 | 亚洲成人av免费在线观看 | 丝袜在线视频 | 又黄又爽的网站 | 久久丁香网 | 五月天中文字幕在线 | 尤物综合网 | 亚洲欧美v | aaa在线 | 久久精品视频6 | 日韩精选在线观看 | 成人www.| 奇米第四色影视 | 91视频精品| 一个人在线观看www软件 | 十大黄台在线观看 | av片观看| 国产视频在线一区 | 国产欧美一区二区三区在线看蜜臀 | 亚洲AV综合色区国产精品天天 | 6996电视影片免费看 | 国产伦理片在线观看 | 欧美一区二区三区在线免费观看 | 成人av国产 | 嫩模被强到高潮呻吟不断 | 精品免费久久 | 九一国产精品 | 一级大片在线观看 | 国产精品亚洲二区在线观看 | 日本大胆欧美人术艺术 | 中文字幕第五页 | 久久毛片视频 | 欧美亚洲国产成人 | 欧美日韩一区二区不卡 | 翔田千里一区二区 | 肉大捧一进一出免费视频 | 免费成人福利视频 | 打屁股黄文 | 精品国产乱码 | 国产福利在线观看视频 | 久色在线| √8天堂资源地址中文在线 欧美精品在线一区二区 | 丝袜美腿一区二区三区 | 任你操精品视频 | 狠色综合 | 久久人人爽人人爽人人 | 美女av免费 | 在线国产视频一区 | 欧美三级a做爰在线观看 | 欧美性猛交ⅹxxx乱大交3 | 国产日韩欧美91 | 久久久看 | 日本一区二区网站 | 极品白嫩的小少妇 | 激情小说在线观看 | 亚洲天堂v| 亚洲理论中文字幕 | 永久免费看片在线观看 | 中文字幕精品久久久 | 亚洲国产精品久久久久婷蜜芽 | 97在线观视频免费观看 | 久久久青青草 | 亚洲国产日韩一区二区 | av黄色网址 | 国产精品久久久无码一区 | 日本在线不卡一区二区三区 | 亚洲人免费 | 神马久久网站 | 免费在线视频观看 | 美女主播福利视频 | 亚洲一区在线不卡 | 午夜香蕉 |