第二部分--排序和順序統(tǒng)計學-引言

說明:該系列博客整理自《算法導論(原書第二版)》,但更偏重于實用,所以晦澀偏理論的內(nèi)容未整理,請見諒。另外本人能力有限,如有問題,懇請指正!

? ? 在第一部分--第2章中,介紹了兩種對n個實數(shù)進行排序的算法。插入排序?的最壞情況運行時間為Θ?( n2),但其算法的內(nèi)循環(huán)是緊密的,對小規(guī)模輸入來說是一個快速的原地排序算法(在排序輸入數(shù)組時,只有常數(shù)個元素被存放到數(shù)組以外的空間中去)。合并排序?有著較好的漸近運行時間Θ(?nlgn),但其中的MERGE程序不在原地操作。

? ? 在本部分中我們要介紹另外兩種對任意實數(shù)進行排序的方法:第6章的堆排序、第7章的快速排序。

? ? 第6章介紹堆排序,它可以在Θ(?nlgn)時間內(nèi)對n個數(shù)進行原地排序。這種算法用到一種重要的稱為堆的數(shù)據(jù)結(jié)構(gòu),還要用它實現(xiàn)優(yōu)先級隊列。

? ? 第7章介紹快速排序,他是另一種對n個數(shù)進行原地排序的算法,但是它的最壞情況運行時間為Θ(?n2)。它的平均運行時間是Θ(?nlgn),在實際中常常優(yōu)于堆排序算法。就像插入排序算法一樣,快速排序的代碼也比較緊湊,所以它的運行時間中隱含的常數(shù)因子就很小。對于大輸入數(shù)組的排序來說,這是一個很常用的算法。

? ? 通過第8章的決策樹模型,證明了任何對n個輸入進行排序的比較排序算法,其最壞情況運行時間的下界為Ω?( nlgn),說明合并排序堆排序都是漸近最優(yōu)的比較排序算法。

? ? 第8章,介紹非比較類排序算法,其運行時間可以突破Ω?( nlgn)的下界,不過計數(shù)排序、基數(shù)排序、桶排序都有使用的前提條件。例如,計數(shù)排序算法假定輸入數(shù)取自集合{0,1,2,...,k}。通過利用數(shù)組下標來確定元素的相對次序,該算法可以在Θ( k+n)時間內(nèi)完成對n個數(shù)的排序,這樣當k=O(n)時,計數(shù)排序的運行時間就與輸入數(shù)組的規(guī)模呈線性關(guān)系。基數(shù)排序算法可以用來擴大計數(shù)排序的使用范圍。如果有n個整數(shù)要排序,每個整數(shù)都有d位,且每位都可以取到k個可能值,則基數(shù)排序就可以在Θ(d* (k+n))時間內(nèi)完成排序。當d是個常數(shù),k=O(n)時,基數(shù)排序就以線性時間運行。桶排序要求了解各個數(shù)在輸入數(shù)組中的概率分布,如果是絕對的均勻分布,則桶排序的效果最好。它可以對均勻分布在半開區(qū)間[0,1)上的n個實數(shù)以平均情況時間O(n)進行排序。

? ? 第9章,中位數(shù)和順序統(tǒng)計學。在一個由n個數(shù)構(gòu)成的集合上,第i個順序統(tǒng)計是集合中第i小的數(shù)。如果未學過本章,我們可能先排序,再查找,采用比較類排序的話,其時間復雜度為Θ(?nlgn),采用非比較排序的話,其時間復雜度為Θ(n)。在本章中讀者將會看到,即使輸入數(shù)組中的各元素為任意實數(shù),我們?nèi)阅茉?i>Θ(n)時間內(nèi)找到第i小元素。我們將給出一個算法,偽代碼很緊湊,最壞情況運行時間為Θ(?n2),但平均情況下為線性時間。另外,還將給出一個更復雜的算法,其最壞情況運行時間為Θ(?n)。

? ? 本部分需要的數(shù)學背景知識說明:對快速排序、桶排序和順序統(tǒng)計量算法進行平均情況分析時,用到了概率論方面的知識(相關(guān)內(nèi)容可參見附錄C和第5章中的概率分析和隨機算法的材料)。順序統(tǒng)計學的最壞情況線性時間算法的分析,包含了比本部分其他最壞情況分析更復雜的數(shù)學內(nèi)容。



排序分類

1、比較排序

? ? 1)、插入排序原地對任意實數(shù)進行排序

? ? 2)、合并排序:非原地對任意實數(shù)進行排序

? ? 3)、堆排序:非原地對任意實數(shù)進行排序。以堆排序為基礎(chǔ),還了解了優(yōu)先級隊列

? ? 4)、快速排序原地對任意實數(shù)進行排序

2、非比較排序

? ? 1)、計數(shù)排序

? ? 2)、基數(shù)排序

? ? 3)、桶排序

3、中位數(shù)和順序統(tǒng)計

? ? 1)、中位數(shù)和順序統(tǒng)計

? ? 2)、動態(tài)順序統(tǒng)計

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容