本章通過介紹插入排序和歸並排序兩種常見的排序算法來說明算法的過程及算法分析,在介紹歸並排序算法過程中引入了分治(divide-and-conquer)算法策略。 1、插入排序 輸入:n個數(a1,a2,a3,...,an) 輸出:輸入序列的一個排列(a1',a2',a3 ...
原創博客,轉載請注明: http: www.cnblogs.com wuwenyan p .html 當算法的輸入n非常大的時候,對於算法復雜度的分析就顯得尤為重要,雖然有時我們能通過一定的方法得到較為精確的運行時間,但是很多時候,或者說絕大多數時候,我們並不值得去花精力求得多余的精度,因為精確運行時間中的倍增常量和低階項已經被輸入規模本身的影響所支配。我們需要關心的是輸入規模無限增加,在極限中 ...
2015-11-20 23:58 4 1072 推薦指數:
本章通過介紹插入排序和歸並排序兩種常見的排序算法來說明算法的過程及算法分析,在介紹歸並排序算法過程中引入了分治(divide-and-conquer)算法策略。 1、插入排序 輸入:n個數(a1,a2,a3,...,an) 輸出:輸入序列的一個排列(a1',a2',a3 ...
摘要: 本章介紹了散列表(hash table)的概念、散列函數的設計及散列沖突的處理。散列表類似與字典的目錄,查找的元素都有一個key與之對應,在實踐當中,散列技術的效率是很高的,合理的設計散函數和沖突處理方法,可以使得在散列表中查找一個元素的期望時間為O(1)。散列表是普通數組概念的推廣 ...
摘要: 紅黑樹是一種二叉查找樹,但在每個結點上增加了一個存儲位表示結點的顏色,可以是RED或者BLACK。通過對任何一條從根到葉子的路徑上各個着色方式的限制,紅黑樹確保沒有一條路徑會比其他路徑長 ...
1、概述 隊列是一種滿足先進先出(FIFO)的數據結構,數據從隊列頭部取出,新的數據從隊列尾部插入,數據之間是平等的,不存在優先級的。這個就類似於普通老百姓到火車站排隊買票,先來的先買票,每個人 ...
本章開始介紹了堆的基本概念,然后引入最大堆和最小堆的概念。全章采用最大堆來介紹堆的操作,兩個重要的操作是調整最大堆和創建最大堆,接着着兩個操作引進了堆排序,最后介紹了采用堆實現優先級隊列。 1、堆 堆給人的感覺是一個二叉樹,但是其本質是一種數組對象,因為對堆進行操作的時候將堆視為一顆 ...
本章介紹了快速排序及其算法分析,快速排序采用的是分治算法思想,對包含n個數的輸入數組,最壞情況下運行時間為θ(n^2),但是平均性能相當好,期望的運行時間為θ(nlgn)。另外快速排序能夠就地排序(我理解是不需要引入額外的輔助空間,每次划分能確定一個元素的具體位置),在虛擬環境中能很好的工作 ...
我決定啃幾個大塊頭,今天開始跟着公開課學習,一是鞏固自己對算法理解,二是可以分享學習心得。 普林斯頓大學的算法課好像也講完了,只有講義,好像還沒視頻,下面我先學麻省理工的算法導論課。 我是一個懶孩子,希望大家監督我。沒有監督,俺繼續不下去,呃哈哈。謝謝。 為什么學習算法 ...
O.n/ on an n-character text T. 該算法實際只是會掃描整個字符 ...