原文:在 n 個數當中找第k小元素 (BFPRT算法,最壞情況為線性時間的選擇問題)

題目描述 問題描述: 在 n 個數當中找第k小元素。 輸入: 第一行輸入n的值,第二行輸入n個數,第三行輸入k的值。 輸出: n 個數中的第k小元素。 要求: 你的算法最壞情況下應該在線性時間內完成。 示例 : 輸入: 輸出: 示例 : 輸入: 輸出: 思路分析 對於常規解法,我們隨機在數組中選擇一個數作為划分值 pivot ,然后進行快排的partation過程 將小於pivot的數放到數組左 ...

2020-11-04 23:26 0 420 推薦指數:

查看詳情

最壞情況線性時間選擇算法

算法select可以確認一個有n>1個不同元素的輸入數組中第i元素。(如果n=1,則select只返回它的唯一輸入數值作為第i元素。) 1.將輸入數組的n元素划分為n/5(向下取整)組,每組5個元素,則至多只有一組由剩下的n mod 5個元素組成。 2.尋找這n/5(向上取整 ...

Sat Sep 02 22:59:00 CST 2017 0 1194
算法線性時間選擇最壞情況下)

線性時間選擇(Linear Select):這個名字不太好理解,什么叫線性時間選擇?一句話,在線性時間內完成選擇。一般情況下是這樣的,我們想要找出一個數組中的最大值或最小值,那就只需要一次排列,然后輸出第一個或最后一個元素就行了,但如果是要找出一個數組中的第k元素呢?   在一般情況 ...

Wed Apr 09 20:45:00 CST 2014 0 6751
k大數,最壞時間復雜度O(n)

(轉載請注明出處,http://www.cnblogs.com/fangpei/p/3538331.html ) 以前寫過的一篇,搬過來。 上算法課的時候聽到老師講這個問題,覺得還是蠻有意思的。已知數組A,找出A[m]...A[p]中的第k大值 ...

Thu Feb 06 00:54:00 CST 2014 0 7488
查找第K的數 BFPRT算法

出處 http://blog.csdn.net/adong76/article/details/10071297 BFPRT算法是解決從n個數選擇k大或第k的數這個經典問題的著名算法,但很多人並不了解其細節。本文將首先介紹求解這個第k小數字問題的幾個思路,然后重點介紹在最壞情況下復雜度 ...

Fri Jan 01 06:16:00 CST 2016 0 8327
線性查找算法(BFPRT)

BFPRT算法的作者是5位真正的大牛(Blum 、 Floyd 、 Pratt 、 Rivest 、 Tarjan)。 BFPRT解決的問題十分經典,即從某n元素的序列中選出第k大(第k)的元素,通過巧妙的分析,BFPRT可以保證在最壞情況下仍為線性時間復雜度。 步驟 將n元素 ...

Fri Nov 03 19:25:00 CST 2017 0 1506
線性時間選擇算法

在一個由 n元素組成的集合中,第 i 個順序統計量(order statistic)是該集合中第 i 元素。也就是說,最小值是第 1 個順序統計量(i = 1),最大值是第 n 個順序統計量(i = n)。 中位數(median)是它所在集合的中點元素。當 n 為奇數時,中位數是唯一 ...

Thu Jul 24 06:42:00 CST 2014 1 5974
線性時間選擇算法

線性時間選擇算法 顧名思義,“線性時間選擇”就是“選擇問題”的“線性時間算法。 1. 選擇問題 元素選擇問題:給定一個能夠線性排序的集合(該集合中有 n元素)和 一個整數 k(\(1 \le k \le n\)) ,找出這 n元素中第 k 元素時間下界 ...

Tue Mar 24 07:08:00 CST 2020 2 4840
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM