5個元素排序

2021-06-26 13:06:51 字數 355 閱讀 3057

一到作業題,原題是:

給定5個元素,給出一種演算法確定這5個元的排序,最壞比較次數為7,並證明以比較為基礎的演算法中7次是最優的。

證明:考慮演算法對應的二叉樹,5個元素一共有5!=120種排列,能區分這些排列對應的二叉樹最小層數為7(2^7=128),故7次是最優的。

演算法:想了會沒想出來,詳見

設他們是abcde,不妨設ad,則用二分插入將c插入到ab中。總共7次。

看了這個解答恍然大悟——妙哉妙哉!此方法出自於「h.b.demuth 於 1956 的博士**」。不愧為博士,就是牛。

仔細思考了一下,之前一直想的是比較bc,用5次確定4個數的序,然後插入e,共8次。

看來博士還有很長的路要走。

只使用7次比較,完成5個元素的排序

考慮快速排序為什麼最壞情況下時間複雜度為o n 2 這是因為每次進行劃分的時候,都有乙個部分大小為0 或者說為乙個常數 如果我們能夠找到一種時間複雜度為o n 的劃分方法,使得劃分後的兩部分大小均為 n 則快速排序的時間複雜度總能為 nlogn 假設我們能夠用非常小的代價尋找5個元素中的中位數,則我...

5 查詢最小的k個元素

題目 輸入n個整數,輸出其中最小的k個。例如輸入1,2,3,4,5,6,7和8這8個數字,則最小的4個數字為1,2,3和4。分析 這道題最簡單的思路莫過於把輸入的n個整數排序,這樣排在最前面的k個數就是最小的k個數。只是這種思路的時間複雜度為o nlogn 我們試著尋找更快的解決思路。我們可以開闢乙...

5個常用的排序演算法總結

基本思想 插入排序就是每一步都將乙個待排資料按其大小插入到已經排序的資料中的適當位置,直到全部插入完畢。void insertsort vector nums 基本思想 先將整個待排元素序列分割成若干個子串行 由相隔某個 增量 的元素組成的 分別進行直接插入排序,然後依次縮減增量再進行排序,待整個序...