1,十大排序算法
簡單排序:插入排序、選擇排序和冒泡排序(必需)
分而治之排序:快速排序,歸並排序(必選,快速排序也要註意中軸線的選取方法)
分配排序:桶排序和基數排序。
樹排序:堆排序(必需)
其他:計數排序(必學)和希爾學習十大算法。如果妳不懂它們,我還是推薦妳去看書,因為看完書,妳可能不僅知道這個算法怎麽寫,還知道它是怎麽來的。推薦的書是《算法第四版》,很詳細,很好理解,有很多插圖。
3.搜索和回溯算法
貪婪算法(必需)
啟發式搜索算法:A*尋路算法(理解)
地圖著色算法,N皇後問題,最佳加工順序。
旅行商問題之所以方便,只是因為和壹些算法有關。我想如果可能的話,我應該全部學會。像貪婪算法的思想,壹定要學。建議通過刷題學習,leetcode直接刷題目。
4.動態規劃
樹DP:01背包問題
線性DP:最長公共子序列和最長公共子序列。
區間DP:矩陣的最大值(和與積)
數字DP:數字遊戲
狀態壓縮DP:旅行推銷員
這裏建議先了解什麽是動態規劃,然後leetcode再刷題目。反正壹般都是上面的問題。後面我也會把學到的套路寫下來,有點類似我之前寫的遞歸,是壹種體驗。
5.字符匹配算法
正則表達式
模式匹配:kmp,Boyer-Moore我想妳差不多知道KMP和Boyer-Moore。
6.流相關算法
最大流:最短增廣路徑,Dinic算法最大流最小割:最大收益問題,網格檢索問題最小費用最大流:最小費用路徑,消遣,我只學過壹些算法,有興趣的可以學學。