演算法是乙個思考過程,獨特的見解很重要!!!
撇開實際問題,單純討論乙個演算法的好壞優劣是沒有意義的,在解決乙個實際問題中,「好的演算法」並不一定有效,「差的演算法」並不一定就不是最適合的演算法,往往乙個演算法與實際問題的契合度最為關鍵。
那麼什麼是最好的演算法:針對乙個實際問題,考量各方面的因素,選擇乙個演算法的大的方向和眾多可以優化的小點,不斷去優化的演算法是針對這個問題的最好的演算法。
1 考慮資料有什麼特徵規律,資料的存出狀況,資料結 構,資料量
2 實際問題中我們可用的計算資源,計算效率的要求?等等都是考量因素。
3 穩定性要求?總體性要求?效能要求?速度和效率要求?演算法的評估標準是什麼?
4 我們真正要解決的是什麼問題?
1 題目中的條件:資料規模、演算法複雜度、空間需求
2 當沒有思路的時候(從**入手):
(a)給自己幾個簡單的測試用例,試驗一下
(b)不要忽視暴力解法,暴力解法通常是思考的起點
(c)優化演算法:遍歷常見的演算法思路、資料結構、空間和時間的交換(雜湊表)
預處理資訊(排序)、在瓶頸處尋找答案
(d)實際編寫問題
1 各種排序演算法(特點以及比較)
2 基礎資料結構和演算法的實現:堆、二叉樹、圖
3 基礎資料結構的使用:鍊錶、棧、佇列、雜湊表、圖、trie、並查集...
4 基礎演算法:深度優先、廣度優先、二分查詢、遞迴...
5 基本演算法思想:遞迴、分治、回溯搜尋、貪心、動態規劃...
tip: sunweitom 8207136
LeetCode演算法學習三 無重複字元的最長子串
給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 ...
大資料最核心的關鍵技術 32個演算法
奧地利符號計算研究所的christoph koutschan博士在自己的頁面上發布了一篇文章,提到他做了乙個調查,參與者大多數是計算機科學家,他請這些科學家投票選出最重要的演算法,以下是這次調查的結果,按照英文名稱字母順序排序。1 a 搜尋演算法 圖形搜尋演算法,從給定起點到給定終點計算出路徑。其中...
大資料等最核心的關鍵技術 32個演算法
奧地利符號計算研究所 research institute for symbolic computation,簡稱risc 的christoph koutschan博士在自己的頁面上發布了一篇文章,提到他做了乙個調查,參與者大多數是計算機科學家,他請這些科學家投票選出最重要的演算法,以下是這次調查的...