本章介紹了快速排序及其算法分析,快速排序采用的是分治算法思想,對包含n個數的輸入數組,最壞情況下運行時間為θ(n^2),但是平均性能相當好,期望的運行時間為θ(nlgn)。另外快速排序能夠就地排序(我理解是不需要引入額外的輔助空間,每次划分能確定一個元素的具體位置),在虛擬環境中能很好的工作 ...
算法導論 學習記錄目錄 快速排序,對於n個數的輸入數組,最壞情況運行時間: n 期望運行時間: nlgn 就地排序 Sort in place 。 數組A p..r 會被分為兩個子數組A p..q 和A q ..r ,其中A p..q 的元素都不大於A q ,A q ..r 都不小於A q 。 如何划分子數組對運行時間的有很大影響,最壞的情況為n個數的數組划分為一個n 的數組和一個 元素的數組 ...
2013-09-28 18:21 14 3637 推薦指數:
本章介紹了快速排序及其算法分析,快速排序采用的是分治算法思想,對包含n個數的輸入數組,最壞情況下運行時間為θ(n^2),但是平均性能相當好,期望的運行時間為θ(nlgn)。另外快速排序能夠就地排序(我理解是不需要引入額外的輔助空間,每次划分能確定一個元素的具體位置),在虛擬環境中能很好的工作 ...
1. 算法描述 快速排序(quick-sort)與前面介紹的歸並排序(merge-sort)(見算法基礎——算法導論(1))一樣,使用了分治思想。下面是對一個一般的子數組A[p~r]進行快速排序的分治步驟: ① 分解:數組A[p~r]被划分為兩個子數組A[p~q]和A[q+1 ...
7.1-1 藍色部分代表不大於pivot,紅色部分表示大於pivot 13 19 9 5 12 8 7 4 21 2 6 11 13 19 9 5 12 8 7 4 21 2 6 11 13 19 9 5 12 8 7 4 21 2 6 11 9 13 19 ...
前言 最近學習了算法導論上的快速排序部分,有不少體會。 今天就來分享一下。在此歡迎大家批評指正文中的錯誤。 快速排序 正文 1.快速排序的優點 說起快速排序,它的名字就顯現出快排最大的優點————快。到底有多快呢?咱們用數據說話: 綜合一般情況來說,快排確實有(億點快)。特別是對較 ...
《算法導論》學習記錄目錄 歡迎指出其中的錯誤和交流。 關於堆排序的具體介紹和C代碼實現見該鏈接。 算導關於堆排序的練習主要是一些證明,可以幫助理解堆的特征。部分練習是圖示過程,這些練習認真用筆過一次會很有收獲。 1.在高度為h的堆中,最多和最少的元素個數是多少? 最多:底層全 ...
7–1. 字典方法。哪個字典方法可以用來把兩個字典合並到一起? 解答:使用update方法 7–2. 字典的鍵。我們知道字典的值可以是任意的Python 對象,那字典的鍵又如何呢?請試着將除數字和 ...
本篇內容: 快速排序 快速排序 算法思想: 通過一趟排序將要排序的數據分割成獨立的兩部分, 其中一部分的所有數據都比另外一部分的所有數據都要小, 然后再按此方法對這兩部分數據分別進行快速排序, 整個排序過程可以遞歸進行,以此達到整個數據變成有序序列。 代碼實現:(遞歸 ...
第七章 快速排序 主要分為兩個子算法,PARTITION(A, p, r)以A[r]為基准對數組進行一個划分,比A[r]小的放在左邊,比A[r]大的放在右邊。QUICKSORT(A, p, r)是快速排序的子程序,調用划分程序對數組進行划分,然后遞歸地調用QUICKSORT(A, p, r ...