日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《算法图解》---笔记

發布時間:2023/12/10 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《算法图解》---笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第1章 算法簡介

二分查找,每次都會減少一半,對于n個元素,使用二分查找最多需要log2n即可找到對應的值
二分查找必須是有序的


大O表示法指出了算法有多快。
大O表示法指出了最糟糕情況下的運行時間

從快到慢的常見5種大O運行時間:
O(logn) < O(n) < O(n * logn) < O(n^2) < O(n!)

第2章 選擇排序

兩種最基本的數據結構—數組和鏈表

數組:

存儲連續的數據
數組的查找效率很高,可迅速找到數組的任何元素

鏈表:

元素可以存儲在內存的任何地方。每個元素都存儲了下一個元素的地址,從而使一系列隨機的內存地址串在一起。
鏈表查找效率沒有數組高,查找鏈表,需要從頭開始,一個一個查找。

當需要在中間插入元素時,鏈表是更好的選擇
刪除元素,鏈表也是更好的選擇

第3章 遞歸

如果使用循環,程序的性能可能更高;
如果使用遞歸,程序可能更容易理解。

由于遞歸函數調用自己,因此編寫這樣的函數時很容易出錯,導致無限循環。
編寫遞歸函數時,必須告訴它何時停止遞歸。

第4章 快速排序

分而治之(divide and conquer D&C):一種著名的遞歸式問題解決方法

遞歸 -> 分而治之 -> 快速排序

如何將一塊168 x 64的地均勻地分成正方形,并確保分出的方塊是最大的?

D&C不止可用于解決問題的算法,更是一種解決問題的思路。

第5章 散列表

散列函數總是將同樣的輸入映射到相同的索引
散列函數將不同的輸入映射到不同的索引

散列函數和數組,創建了一種被稱為 散列表(hase table)的數據結構

散列表也被稱為:散列映射、映射、字典、關聯數組

處理沖突的最簡單的方法:如果兩個鍵映射到了同一個位置,就在這個位置存儲一個鏈表

  • 最理想的情況:散列函數將鍵均勻地映射到散列表的不同位置
  • 如果散列表存儲的鏈表很長,散列表的速度將急劇下降。然而,如果使用的散列函數很好,這些鏈表就不會很長
  • 散列函數很重要,好的散列函數很少導致沖突。

第6章 廣度優先搜索

圖由 節點 和 邊 組成
一個節點可能與眾多節點直接相連,這些節點被稱為鄰居。

解決最短路徑問題的算法被稱為:廣度優先搜索
廣度優先搜索可回答兩類問題:

  • 從節點A出發,有前往節點B的路徑嗎?
  • 從節點A出發,前往節點B的哪條路徑最短?
  • 隊列:先進先出(FIFO),只支持兩種操作:入隊和出隊
    棧:后進先出(LIFO)

    有向圖中的邊為箭頭,箭頭的方向指定了關系的方向
    無向圖中的邊不帶箭頭,其中的關系是雙向的。
    無向圖意味著兩個節點彼此指向對方,其實就是環

    第7章 狄克斯特拉算法

    廣度優先搜索找出段數最少的路徑
    狄克斯特拉算法(Dijksta)找出最快的路徑

    廣度優先搜索查找兩點之間的最短路徑,“最短”指的是 段數最少
    狄克斯特拉算法中,給每段都分配了一個數字或權重,因此,找出的是總權重最小的路徑。狄狄克斯特拉算法只適用于:有向、無環圖
    狄克斯特拉算法不能用于:包含 負權邊的圖

    第8章 貪婪算法

    貪婪算法很簡單:每步都采取最優的做法。每步都選擇局部最優解,最終得到全局最優解。

    NP完全問題:沒有快速算法的問題
    學習識別NP完全問題,以免浪費時間去尋找解決它們的快速算法

    第9章 動態規劃

    動態規劃:將問題分成小問題,并先著手解決這些小問題

    動態規劃處理的是,01問題,要不拿,要不不拿,而不能是拿一部分的(大米、扁豆)

    第10章 K最近鄰算法

    K最近鄰(KNN)算法,把A與附近相近B分為一類
    KNN用于分類和回歸,需要考慮最近的鄰居

    推薦系統就是使用的K最近鄰算法

    KNN算法也可用于機器學習領域、OCR識別

    第11章 接下來如何做

    二叉查找樹:對于每個節點,左子節點的值都比它小,而右子節點的值都比它大
    二叉查找樹中查找節點時,平均運行時間為O(logn),但在最糟的情況下所需時間是O(n)
    而在有序數組中查找,最糟的情況下所需時間也只有O(logn)

    那么,有序數組查找比二叉查找樹好?

    然而,二叉查找樹的插入與刪除的操作速度要快得多

    總結

    以上是生活随笔為你收集整理的《算法图解》---笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。