算法導(dǎo)論閱讀筆記6-中位數(shù)和順序統(tǒng)計(jì)量

在一個(gè)由n個(gè)元素組成的集合中,第i個(gè)順序統(tǒng)計(jì)量是該集合中第i小的元素残黑。例如斋否,在一個(gè)元素集合中,最小值是第1個(gè)順序統(tǒng)計(jì)量(i=1),最大值是第n個(gè)順序統(tǒng)計(jì)量疫诽。

假設(shè)集合中的元素都是互異的旦委,但可以推廣到集合中包含重復(fù)元素的情形缨硝。
輸入:一個(gè)包含n個(gè)(互異的)數(shù)的集合A和一個(gè)整數(shù)i,1≤i≤n查辩。
輸出:數(shù)組中的元素x,且A中恰好有i-1個(gè)元素小于它长踊。
可以在O(nlgn)時(shí)間內(nèi)解決這個(gè)選擇問題,因?yàn)榭梢杂枚雅判蚧驓w并排序?qū)斎霐?shù)據(jù)進(jìn)行排序辟汰,然后在輸出數(shù)組中根據(jù)下標(biāo)找到第i個(gè)元素即可阱佛。

最大值和最小值

MINIMUM(A)
min = A[1]
for i = 2 to A.length
  if min > A[i]
    min = A[i]
return min

為了確定最小值瘫絮,必須要做n-1次比較麦萤。因此扁眯,從所執(zhí)行的比較次數(shù)來看,算法MINIMUM是最優(yōu)的命满。

同時(shí)找到最小值和最大值 可以分別獨(dú)立地找出最大值和最小值胶台,這各需要n-1次比較杂抽,共需2n-2次比較。事實(shí)上缩麸,只需要最多3\lfloor{n}/2\rfloor次比較就可以同時(shí)找到最小值和最大值杭朱。具體的方法是記錄已知的最小值和最大值。但我們并不是將每一個(gè)元素與當(dāng)前的最大值和最小值進(jìn)行比較-這樣做的代價(jià)是每個(gè)元素需要2次比較八酒,而是對(duì)輸入元素成對(duì)地進(jìn)行處理丘跌。首先,我們將一對(duì)輸入元素相互進(jìn)行比較闭树,然后把較小的與當(dāng)前最小值比較,把較大的與當(dāng)前最大值進(jìn)行比較报辱。這樣碍现,對(duì)每對(duì)元素共需3次比較。
如果n為奇數(shù)爽篷,我們將最大值和最小值的初值都設(shè)為第一個(gè)元素的值慢睡,然后成對(duì)地處理剩下的元素漂辐。如果n是偶數(shù),就對(duì)前兩個(gè)元素進(jìn)行一次比較袒啼,以決定最大值和最小值的初值蚓再,然后成對(duì)地處理余下的元素对途。

期望時(shí)間為線性時(shí)間的選擇算法

一般選擇問題看起來要比找最小值這樣的簡(jiǎn)單問題更難。但令人驚奇的是实檀,這兩個(gè)問題的漸近運(yùn)行時(shí)間卻是相同的:Θ(n)膳犹。
以快速排序算法為模型须床,將輸入數(shù)組進(jìn)行遞歸劃分渐裂。但與快速排序不同的是,快速排序會(huì)遞歸處理劃分的兩邊族阅,而RANDOMIZED-SELECT只處理劃分的一邊。RANDOMIZED-SELECT的期望運(yùn)行時(shí)間為Θ(n)愧沟。這里沐寺,假設(shè)輸入數(shù)據(jù)都是互異的混坞。

RANDOMIZED-SELECT(A, p, r, i)
if p == r
  return A[p]
q = RANDOMIZED-PARTITION(A, p, r)
k = q - p + 1
if i == k
  return A[q]
else if i < k
  return RANDOMIZED-SELECT(A, p, q-1, i)
else
  return RANDOMIZED-SELECT(A, q+1, r, i-k)

最壞情形運(yùn)行時(shí)間為Θ(n2)钢坦。
期望運(yùn)行時(shí)間為O(n),假設(shè)元素是互異的。

最壞情形為線性時(shí)間的選擇算法

  1. 將輸入數(shù)組的n個(gè)元素劃分為\lceil{n/5}\rceil組逛万,每組5個(gè)元素宇植,且至多只有一組由剩下的n mod 5個(gè)元素組成。
  2. 尋找這\lceil{n/5}\rceil組中每一組的中位數(shù):首先對(duì)每組元素進(jìn)行插入排序埋心,然后確定每組有序元素的中位數(shù)指郁。
  3. 對(duì)第2步中找出的\lceil{n/5}\rceil個(gè)中位數(shù),遞歸調(diào)用SELECT已找出其中位數(shù)x拷呆。
  4. 利用修改過的PARTITION版本闲坎,按中位數(shù)的中位數(shù)x對(duì)輸入數(shù)組進(jìn)行劃分。讓k比劃分的低區(qū)中的元素?cái)?shù)目多1茬斧,因此x是第k小的元素腰懂,并且有n-k個(gè)元素在劃分的高區(qū)。
  5. 如果i=k项秉,則返回x绣溜。如果i<k,則在低區(qū)遞歸調(diào)用SELECT來找出第i小的元素娄蔼。如果i>k,則在高區(qū)遞歸查找第i-k小的元素底哗。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末咒吐,一起剝皮案震驚了整個(gè)濱河市恬叹,隨后出現(xiàn)的幾起案子唯鸭,更是在濱河造成了極大的恐慌目溉,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異绣檬,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)零抬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門护糖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來锰扶,“玉大人坷牛,你說我怎么就攤上這事颜及。” “怎么了肄扎?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵酌呆,是天一觀的道長(zhǎng)月劈。 經(jīng)常有香客問我,道長(zhǎng)坛梁,這世上最難降的妖魔是什么划咐? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任队魏,我火速辦了婚禮官帘,結(jié)果婚禮上刽虹,老公的妹妹穿的比我還像新娘。我一直安慰自己阀圾,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布澳迫。 她就那樣靜靜地躺著抓歼,像睡著了一般谣妻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上减江,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天巡莹,我揣著相機(jī)與錄音,去河邊找鬼吧史。 笑死,一個(gè)胖子當(dāng)著我的面吹牛钞脂,可吹牛的內(nèi)容都是我干的刘莹。 我是一名探鬼主播扇调,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼熬芜,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎赂韵,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體质涛,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年恢口,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡窜觉,死狀恐怖旬陡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情场航,我是刑警寧澤蜜另,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布此迅,位于F島的核電站忍些,受9級(jí)特大地震影響搅窿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜游桩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望滨达。 院中可真熱鬧,春花似錦、人聲如沸谓传。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春关拒,著一層夾襖步出監(jiān)牢的瞬間熟尉,已是汗流浹背恐锦。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工潘飘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留眶明,地道東北人现喳。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓灸促,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子萝玷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 在C語(yǔ)言中,五種基本數(shù)據(jù)類型存儲(chǔ)空間長(zhǎng)度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 3,325評(píng)論 0 2
  • SudokuPuzzles,classiclogicfreepuzzlegames.Thebestdailysod...
    流云追風(fēng)閱讀 518評(píng)論 0 0
  • 導(dǎo)師在黑板上刷刷寫下幾道題,“好,同學(xué)們,這就是你們今天的作業(yè)肛度,每道題要求最少寫出三種解決方法加袋。” 這里是全國(guó)一流...
    江五圓閱讀 844評(píng)論 16 19
  • 在我們項(xiàng)目中,經(jīng)常用到自定義UIive控件,一般我們都會(huì)選擇XIB進(jìn)行布局,那么swift重如何從XIB加載UIV...
    翀鷹精靈閱讀 10,131評(píng)論 8 19
  • 可能因?yàn)樵诩覒械脤懭沼浟?所有好久沒寫什么了 之前總是因?yàn)槟承┤四承┦庐a(chǎn)生某種情緒 這次 到不算那樣子了 教粑粑玩...
    左二七禾閱讀 133評(píng)論 0 0