線性查詢演算法
十大演算法之線性查詢:
介紹:
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小元素。
具體詳情解析請點選:十大演算法之線性查詢演算法
相關文章
- 查詢與排序01,線性查詢,時間複雜度,演算法排序時間複雜度演算法
- 線性時間查詢
- 演算法-查詢(線性、二分、插值、斐波那契)演算法
- 陣列的查詢(搜尋):線性查詢和二分法查詢陣列
- 序列並查集的線性演算法並查集演算法
- 廣度優先演算法查詢路線演算法
- 離線查詢與線上查詢
- 查詢演算法__插值查詢演算法
- 連線查詢
- 查詢演算法__二分查詢演算法
- 查詢演算法__Fibonacci查詢演算法
- mysql-分組查詢-子查詢-連線查詢-組合查詢MySql
- 一種期望線性的靜態區間查詢
- 查詢演算法演算法
- 演算法 - 查詢演算法
- 演算法(查詢)演算法
- #查詢演算法#【1】簡單查詢:順序、折半查詢演算法
- 資料庫 - 連線查詢、巢狀查詢、集合查詢資料庫巢狀
- MySQL之連線查詢和子查詢MySql
- mysql查詢語句5:連線查詢MySql
- select查詢之四:連線查詢
- 查詢演算法之二分查詢演算法
- java陣列回顧---線性查詢最大值最小值---二分查詢Java陣列
- SQL連線查詢SQL
- oracle 連線查詢Oracle
- 【Oracle】--連線查詢Oracle
- 查詢演算法(上)演算法
- 查詢演算法(下)演算法
- Java 查詢演算法Java演算法
- 常用查詢演算法演算法
- sql 連線查詢例項(left join)三表連線查詢SQL
- 二分查詢【折半查詢】演算法 PHP 版演算法PHP
- Python 查詢演算法_眾裡尋他千百度,驀然回首那人卻在燈火闌珊處(線性、二分,分塊、插值查詢演算法)Python演算法
- 資料庫資料的查詢----連線查詢資料庫
- 水煮oracle31----連線查詢&合併查詢Oracle
- MySQL之連線查詢MySql
- 插值查詢演算法演算法
- 子字串查詢演算法字串演算法