未完

codelearner 發表在 痞客邦 留言(0) 人氣()

為什麼這三個運算要放在這裡一起討論呢?

原因是這三個在大數運算中 算是較為簡單的 

如果想要了解除法和餘數運作

可以參考這篇 http://codelearner.pixnet.net/blog/post/131503030

所謂"大數" 到底可以處理哪些問題呢?

codelearner 發表在 痞客邦 留言(0) 人氣()

霍夫曼編碼是一種編碼方式 

英文版維基百科有他的圖解 http://en.wikipedia.org/wiki/File:Huffman_huff_demo.gif

codelearner 發表在 痞客邦 留言(0) 人氣()

A 講解

隊列(或者叫佇列)是一種資料結構 具有以下特性:

● 先進先出 (First-In-First-Out / FIFO)

● 插入(Insert)必發生在尾端(Rear) 而刪除(Delete)必發生在前端(Front)

在這邊我們介紹以下三種相關問題:

codelearner 發表在 痞客邦 留言(0) 人氣()

A 講解

這題即是用1^2 + 2^2 + ....... + n^2 之公式

所以利用 n(n + 1)(2n + 1) / 6 即可

B 程式碼如下:

http://codepad.org/M6R1hL6X

codelearner 發表在 痞客邦 留言(0) 人氣()

A 講解:

這題很直觀 我的做法是

先判斷起始是否為奇數 是的話 直接從頭相加

欲相加數加二加二跳 直至到終止條件為止

不是的話加一在開始

codelearner 發表在 痞客邦 留言(0) 人氣()

A 講解

建一個min heap 每次從中取兩個元素出來 並推回相加後結果

另外 用"cost"變數記載花費

重複直至heap的大小為"1"

此時推進去的即為全部相加的和 而"cost"變數的值 即為答案

codelearner 發表在 痞客邦 留言(0) 人氣()

A 講解:

堆排序法 平均時間複雜度Θ(n lg n) 最差最優都是O(n lg n) 

概念就是當資料一個個讀進來時

就用"插入" (Insert)建構一個最大堆 

建立好後 將第一個元素(最大) 和最後一個元素交換 此步驟即類似"刪除"(delete)指令

codelearner 發表在 痞客邦 留言(0) 人氣()

A 講解:

堆是一種資料結構 具有以下特性:

●  堆中某個節點值總是不大於或不小於其父節點值

● 必定是一棵完全樹

而在這邊只簡單介紹以下三種相關問題

codelearner 發表在 痞客邦 留言(0) 人氣()

A 講解:

快速排序法 平均時間複雜度 O(n lg n) 但最糟測資會到 O(n^2) 非為一個stable sort

但總體來說 被公認為最有效率排序演算法

其實C語言函式庫內就有提供 但這裡要做一個實做來了解內部運作

基本概念就是 先選一個"鍵值" (程式碼變數splitting) 

codelearner 發表在 痞客邦 留言(0) 人氣()

A 講解:

插入排序法 時間複雜度 O(n^2) 為一個stable sort

假設一筆資料 5 6 4 89 25 33 8

用此排序法 從六開始 (所以從陣列第二個元素開始)

其右邊為"未排序"  左邊為"已排序"

codelearner 發表在 痞客邦 留言(0) 人氣()

A 講解:

二元搜尋法 時間複雜度 O(lg n)

想法就是一次刪減掉一半資料做搜尋

想法如下:

傳入(左,右,答案)

codelearner 發表在 痞客邦 留言(0) 人氣()

1
Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。