線性查詢演算法
十大演算法之線性查詢:
介紹:
BFPRT演算法解決的問題十分經典,即從某n個元素的序列中選出第k大(第k小)的元素,通過巧妙的分 析,BFPRT可以保證在最壞情況下仍為線性時間複雜度。該演算法的思想與快速排序思想相似,當然,為使得演算法在最壞情況下,依然能達到o(n)的時間複雜 度,五位演算法作者做了精妙的處理。
時間複雜度
O(N)
演算法步驟:
1. 將n個元素每5個一組,分成n/5(上界)組。
2. 取出每一組的中位數,任意排序方法,比如插入排序。
3. 遞迴的呼叫selection演算法查詢上一步中所有中位數的中位數,設為x,偶數箇中位數的情況下設定為選取中間小的一個。
4. 用x來分割陣列,設小於等於x的個數為k,大於x的個數即為n-k。
5. 若i==k,返回x;若i<k,在小於x的元素中遞迴查詢第i小的元素;若i>k,在大於x的元素中遞迴查詢第i-k小的元素。
終止條件:n=1時,返回的即是i小元素。
具體詳情解析請點選:十大演算法之線性查詢演算法
相關文章
- 演算法-查詢(線性、二分、插值、斐波那契)演算法
- 陣列的查詢(搜尋):線性查詢和二分法查詢陣列
- 查詢演算法__Fibonacci查詢演算法
- 離線查詢與線上查詢
- 查詢演算法__插值查詢演算法
- 序列並查集的線性演算法並查集演算法
- 廣度優先演算法查詢路線演算法
- 查詢演算法__二分查詢演算法
- 查詢演算法演算法
- 演算法 - 查詢演算法
- mysql-分組查詢-子查詢-連線查詢-組合查詢MySql
- 查詢演算法之二分查詢演算法
- 連線查詢
- 一種期望線性的靜態區間查詢
- MySQL之連線查詢和子查詢MySql
- mysql查詢語句5:連線查詢MySql
- 查詢演算法(上)演算法
- 查詢演算法(下)演算法
- Java 查詢演算法Java演算法
- oracle 連線查詢Oracle
- SQL連線查詢SQL
- Python 查詢演算法_眾裡尋他千百度,驀然回首那人卻在燈火闌珊處(線性、二分,分塊、插值查詢演算法)Python演算法
- 二分查詢【折半查詢】演算法 PHP 版演算法PHP
- sql 連線查詢例項(left join)三表連線查詢SQL
- 雜湊查詢演算法演算法
- 插值查詢演算法演算法
- 子字串查詢演算法字串演算法
- 分塊查詢【大規模資料查詢演算法優化】【索引順序查詢】演算法 PHP 版演算法優化索引PHP
- 演算法->二分查詢演算法
- 【演算法】二分查詢演算法
- php查詢演算法的理解PHP演算法
- ES查詢之查詢屬性過濾、結果高亮顯示
- 如何找東西?查詢演算法之順序查詢和二分查詢詳解演算法
- ES 筆記三十四:剖析分散式查詢及相關性演算法筆記分散式演算法
- mysql求交集:UNION ALL合併查詢,inner join內連線查詢,IN/EXISTS子查詢MySql
- 1112跨表連線查詢
- oracle連線查詢詳解Oracle
- MySQL學習-連線查詢MySql
- 資料結構實驗之查詢七:線性之雜湊表資料結構