《演算法導論》習題6 4 3

2021-08-27 15:10:51 字數 354 閱讀 9864

第80頁6.4-3

如果是已按遞增順序排列,在建堆的時候需要o(n),而在堆排序的時候需要o(nlgn),所以遞增順序排列的話,仍然需要o(nlgn).如果按照遞減的順序排列,在建堆的時候需要o(1),在堆排序的時候仍然需要o(nlgn),故在這兩種情況下,演算法需要的時間都是o(nlgn)。

補充:堆排序原理:

堆排序是利用一直特殊的資料結構來完成排序工作的,即「堆」。堆可以被看做一棵完全二叉樹,樹的每一層都會填滿,最後一層可能除外。這種堆有兩種:最大堆和最小堆。在堆排序演算法中,使用的是最大堆。最小堆通常在構造優先佇列時使用。最大堆的性質是除了根節點之外的每乙個節點,其父節點的值必須大於等於其子節點。即t[parent] >= t[child]

演算法導論 習題 5 4 1

題 乙個房間裡必須要有多少人,才能讓某人和你生日相同的概率至少為1 2?必須要有多少人,才能讓至少兩個人生日為7月4日的概率大於1 2?解 1.假設一年有n 365 天,房間裡面有x人 不算自己 為求某人與自己生日相同,可求其反面,即房間裡面沒人跟自己生日相同,他們每個人生日可以在n天中選擇除去我生...

演算法導論 習題 6 5 8

題 請給出乙個時間為o nlgk 用來將k個已排序鍊錶合併為乙個排序鍊錶的演算法。此處n為所有輸入鍊錶中元素的總數。k個已排序鍊錶,假設每乙個鍊錶的第乙個元素為root i i 1,2,3.k 那麼可以為這k個元素root i 構造乙個最小堆heap min,其時間複雜度為o lgk 此時堆頂元素假...

演算法導論 習題5 2 2

首先我們有三個觀察結論 1 1號助理總是會被雇用 2 最佳助理 即rank為n的助理 總是會被雇用 3 最佳助理不可能是1號助理,因為那樣將只能剛好雇用一次。在使hire assistant剛好雇用兩次的序列中,一號助理必然有rank i n 1,所有rank在 i 1.n 1 區間內的助理必然在r...