【演算法導論】排序 (四):決策樹、線性時間排序(計數、基數、桶排序)

來源:互聯網
上載者:User

到目前為止,一共整理總結了五大排序演算法:

1、插入排序

2、冒泡排序、選擇排序、交換排序 (把這三種方法歸為一種,因為他們的思想本質上都是一樣的)

3、歸併排序

4、堆排序

5、快速排序

以上五種排序都可以稱為“比較排序”,顧名思義,因為他們都是基於比較元素 來決定其相對位置的。

其中前兩種的時間為O(n^2),歸併排序和堆排序最壞O( n lg n ),快排平 均O( n lg n )

定理:任意一種比較排序演算法最壞情況下,都需要做 Ω( n lg n )次的比較。

我們通過決策樹來證明:

●決策樹(decision tree)

比較排序可以被抽象的視為決 策樹。撒一顆決策樹是一顆滿二叉樹,表示某排序演算法作用於給定輸入元素所作的所有比較,而其它因素忽 略。

假設有一組三個元素的序列,我們用1,2,3來分別表示這三個元素,我們基於比較來對它排序, 可以有下列決策樹:

不難發現,判定樹的葉子表示了三個元素的所有可能排列。

另外,用比較排序對這三個元素進行排序 的話,你總可以找到一條路徑來表示它的整個比較過程。(需要注意的是,1並不表示它代表第一個元素,它 可以代表三個元素中任意一個。2,3也相同。但是1,2,3不指向相同元素)。顯然最壞情況下的複雜度即是 判定樹的高。

對於一顆高度為H的、具有L個可達分葉節點的決策樹,它對應於對N個元素所作的比較排 序。因為N個元素有N!種排列(排列組合知識), 每一種都作為一個葉子出現在書中,故有N!<=L(重要, 註:)有又由於在一顆高為H的二叉樹中,葉子的數目不多於2^H,則有 N! <= L <= 2^H

對該式 子取對數,得到:

        H>=lg(N!)      (因為lg函 數時單調遞增的)

            =Ω(N lg N)

註: 一開始我以 為應該是等於的關係,後來百度了一下,原文有這一句:Because each of the N! permutation appears as areachable leaf. 作者的意思著重於用N!來表示N個元素的所有可能排列,但是N個元素的所有可能排列實 際上是小於等於N!的,因為在N個元素中有可能有相等的元素。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.