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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构--折半查找法 详解

發布時間:2025/3/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构--折半查找法 详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? 1. 折半查找法定義
???????? 折半查找法,也稱為二分查找法, 二分搜索, 是一種在有序數組中查找某一特定元素的搜索算法.搜索過程中從數組的中間元素開始, 如果中間元素正好是要查找的元素, 則搜索過程結束;如果某一特定元素大于或者小于中間元素, 則在數組大于或小雨元素的那一半中查找, 而且跟開始一樣從中間元素開始比較. 若某1個步驟中數組為空, 則代表找不到. 這種搜索算法每一次比驕傲都使搜索范圍縮小一半.

????????? -- 摘自維基百科.


?????? ? 2. 折半查找法分析
???????? 從定義中可以看出折半查找法有幾個特性.

???????? 2.1 先決條件: 要搜索的數據已經排好序
???????? 當然, 怎樣將數據排序也是1個算法, 這里先不考究了, 但是要使用折半查找法, 這個條件是必需滿足的

???????? 2.2 折半查找法適合海量數據查找
??????
折半查找法每執行1次.就會拋棄一半的無用數據, 如果數據很少的話,其實比線性查找快不了多少, 但是數據量很大的話, 拋棄的一半無用數據就很客觀了!?? 相對于線性查找中節省了這一半數據的遍歷時間啊.

???????? 2.3 折半查找法算法復雜度
??????
假如要查找數據的數量是n, 查找的次數為x,那么查找1次(x=1), 剩下的數據量就是 (n-1)/2 = n/2 -1/2了
? ? ? ?? 當x=2 時? 剩下的數據量就是? n/4 - 3/4
???????? 當x=3 時? 剩下的數據量就是? n/8 - 7/8

???????? 所以剩下的數據量R =? n/2^x?? - 1 + 1/2^x

????????? 當x很大時,? R就~= n/2^x -1 了

????????? 那么什么時候才會肯定會找出要找的數據呢, 或者缺認該數據不存在呢.
????????? 就是當剩余的數據量R=0 時啊.

?????????? 這時? n/2^x -1 =0? => 2^x = n => x= log2^n?? (底為2,冪為n的對數)
?????????? 所以算法復雜度就是? O(log2^n)
?????????? 比起線性查找的算法復雜度O(n) , 優勝很多了.(如果n很大的話)

?????? 3. 折半查找法的一個實現例子(c語言)


上面的bsget函數就用了折半查找法:
輸出:
?
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的数据结构--折半查找法 详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。