原创 算法#03--詳解最小二乘法原理和代碼

最小二乘法原理 最小二乘法的目標:求誤差的最小平方和,對應有兩種:線性和非線性。線性最小二乘的解是closed-form(如下文),而非線性最小二乘沒有closed-form,通常用迭代法求解(如高斯牛頓迭代法,本文不作介紹)。

原创 從0自學C#09--抽象工廠模式實例

抽象工廠模式(Abstract Factory) 1.適用環境 (主要是用在生產製造多種產品,軟件有多種皮膚,多種數據庫等環境) 一個系統不應當依賴於產品類實例如何被創建、組合和表達的細節,這對於所有類型的工廠模式都是重要的。

原创 算法#11--用簡單的思維理解歸併排序和三向切分快速排序

歸併排序 1.原理 歸併操作(merge),也叫歸併算法,指的是將兩個已經排序的序列合併成一個序列的操作。歸併排序算法依賴歸併操作。 步驟: 申請空間,使其大小爲兩個已經排序序列之和,該空間用來存放合併後的序列 設定兩個指針,最

原创 算法#07--揹包、隊列和棧(鏈表實現)

引言 介紹了揹包、隊列和棧三種數據類型,以及如何通過鏈表實現。首先簡單介紹下鏈表。 鏈表 概念 是一種常見的基礎數據結構,是一種線性表,但是並不會按線性的順序存儲數據,而是在每一個節點裏存到下一個節點的指針(Pointer)。由於

原创 VBA outlook實戰#01--自動回覆郵件

VBA編程實現自動回覆郵件 通過腳本實現,接收郵件後,自動閱讀回覆,回覆內容可自定義。 1.腳本代碼 首先通過CreateHTMLBody方法創建自動回覆郵件的內容,該內容由HTML語法實現,可以設置文本字體、字號(大小)和顏色。

原创 固件#06--STM32-MCU-GPIO工作模式

固件06–STM32 MCU GPIO工作模式 總結: 四種輸入四種輸出## 浮空輸入:GPIO-IN-FLOATING 可以做KEY識別,RX1 上拉輸入:GPIO-IPU IO內部上拉電阻輸入,默認是高電平

原创 算法#02--斐波那契Fibonacci數列算法優化

算法列表 本文從時間效率和佔用空間內存角度評估,找出最優算法。 經典遞歸算法Recursive algorithm(很慢) 動態存儲算法Dynamic programming(慢) 矩陣冪算法Matrix exponentiat

原创 算法#17--無向圖的深度優先搜索和廣度優先搜索

無向圖 1.定義 在數學上,一個圖(Graph)是表示物件與物件之間的關係的方法,是圖論的基本研究對象。一個圖看起來是由一些小圓點(稱爲頂點或結點)和連結這些圓點的直線或曲線(稱爲邊)組成的。 如果給圖的每條邊規定一個方向,那麼得

原创 算法#13--紅黑樹完整代碼Java實現

紅黑樹 定義 紅黑樹(英語:Red–black tree)是一種自平衡二叉查找樹,是在計算機科學中用到的一種數據結構,典型的用途是實現關聯數組。 紅黑樹的另一種定義是含有紅黑鏈接並滿足下列條件的二叉查找樹: 紅鏈接均爲左鏈接;

原创 算法#01--素數和牛頓迭代法求平方根

素數 1.概念 質數(prime number)又稱素數,有無限個。除了1和它本身以外不再有其他的除數整除。根據算術基本定理,每一個比1大的整數,要麼本身是一個質數,要麼可以寫成一系列質數的乘積,最小的質數是2。 2.論點 在一般

原创 算法#09--用簡單的思維理解選擇、插入、冒泡和希爾排序

選擇排序 1.原理 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。 2.特點 ①運行時間與輸入無關。

原创 算法#12--詳解各種字符串排序算法和代碼實現

1.算法彙總 首先,來看一張各種字符串排序算法的彙總。前面的文章已經介紹過插入排序、快速排序、歸併排序和三向快速排序。這裏不再介紹。 我們將重點詳解:低位優先的字符串排序、高位優先的字符串排序和三向字符串快速排序。 2.低位優先

原创 算法#06--基本數據類型和包裝

基本數據類型 數據類型是程序設計語言描述事物、對象的方法。Java數據類型分爲內置類型和擴展類型兩大類。內置類型就是Java語言本身提供的基本數據類型,比如,整型數,浮點數,字符,布爾值等等。而擴展類型則是Java語言根據基本類型

原创 算法#10--用簡單的思維理解堆排序

堆 定義 首先理解什麼是堆。 堆(英語:Heap)是計算機科學中一類特殊的數據結構的統稱。堆通常是一個可以被看做一棵樹的數組對象。 n個元素序列{k1,k2…ki…kn},當且僅當滿足下列關係時稱之爲堆: (ki <= k2i,k

原创 算法#14--詳解各種字符串查找算法和代碼實現

1.算法彙總 首先,來看一張各種字符串查找算法的彙總。前面的文章已經介紹過二叉樹查找和紅黑樹查找。這裏不在介紹。 本文重點介紹後面三種查找算法:線性探測法、R向單詞查找樹和三向單詞查找樹。 2.線性探測法 實現散列表的另一種方式