讀書筆記 基於剪枝法提高程式效率

2021-06-28 23:57:35 字數 946 閱讀 4260

問題描述:

乙個新的實驗要研究n個物體,它們的編號從1~n, 已知n是乙個奇數,所有物體的硬度值都未知,且不同的物體的硬度值各不相同。硬度值y是個自然數。 其中中等硬度物體x,硬度大於x的物體個數和硬度小於x的物體個數相等。

現有一種儀器,只要將三個不同的物體放入儀器,儀器就會檢測並返回這三個物體中的中等硬度物體寫個程式找出這個中等硬度物體。

1,二分插入:

已知前m個物體硬度的順序關係。將下乙個物體用二分法插入到適當的位置,得出前m+1個物體硬度的順序關係。以此類推,得出n個物體的順序關係,從而知道中等硬度者。

2,二分插入 + 剪枝

原理:設 2m +1 = n, 對於乙個已全部排好順序的序列,中等硬度物體左邊有m個物體,右邊有m個物體,也就是說,若已經知道乙個物體所在的序列中位置的左邊(右)有m個以上的物體時,則它一定不是所求。所以不用排出它的具體位置,將其插入在最右邊(左)即可。

步驟:

先將前m+1個物體排序,第k個物體只有插入在位置k-m-1 到位置 m+1 這個子串行中,才有可能稱為中等硬度。若當前插入位置不在上述區域中,則它的具體位置對結果沒有任何影響。

當前已將n-1個物體排好序,那麼在這n-1個物體中只有最中間的兩個物體才有可能為中等硬度,我們稱為a,b(a在b的左側)。

按照上述方法,第n個物體c只需與a,b比較一次:

①若a在中間,則c的插入區域在a的左邊,已不在可能區域中,於是將c插入到最左端,最終結果是a。

②若b在中間,同理,將c插入到最右端,結果為c。

③若c在中間,則插入到ab之間,結果為c。

綜上,資料結構的選擇是為了簡化操作,去除不必要的步驟,是演算法的基礎。而演算法的思考宗旨就是充分的利用區域性計算資訊,整合計算資源,避免重複的計算步驟。

《時間投資法》讀書筆記

時間投資法 勝間和代 推薦 5星 時間管理的關鍵並不在於提高要做的事的效率,而在於確定不該做的事。1.首先是時間投資的概念,之前接觸到的書,談的都是時間管理,如何有效的管理時間,提高生產效率,而本書卻將時間視作一種資產,用於投資。全書灌輸的一種觀念也正是投資,如何投資時間,才能使收益最大化。因為有了...

高效休息法 讀書筆記

預設模式網路 defaultmode network,簡稱dmn 高效休息法的目的 2.消除大腦疲勞的七個休息法 2.心事重重時 動態冥想 3.壓力導致身體狀態不佳時 壓力呼吸化法 4.想跳脫思考怪圈時 猴子思維 消除法 5.被憤怒衝動沖昏頭腦時 rain法 6.看他人不順眼時 溫柔的慈悲心 7.身...

《除錯九法》讀書筆記

除錯九法 讀書筆記 婁雨禛pb16060356 理解問題本身,遠比解決問題更加重要 人們想要掌握本書中的所有有用知識也並非完全不可能,事實上我就是盡全力這樣做的。福爾摩斯 殺人的五個橘核 我們總是驚嘆福爾摩斯的能力,將其歸於驚人的天賦。殊不知驚人的天賦總是扎根於辛勤的努力,辛勤的努力總是體現在日常一...