三、快排與歸併
本週所學習的主要有遞迴、樹及二叉樹、快排和歸併排序,bfs與dfs
什麼是遞迴?
在數學與電腦科學中,遞迴(recursion)是指在函式的定義中使用函式自身的方法。實際上,遞迴,顧名思義,其包含了兩個意思:遞 和 歸,這正是遞迴思想的精華所在。
遞迴的使用場景及例題
遞迴我們在生活中就經常會用到,同時這種多見於題目例如斐波那契等等一系列的題,這些題的共同之處在於,他們對於遞迴思想的考察。
在書中64到65頁所提到的漢諾塔問題,便是一道經典的遞迴題目。
using system;
using system.collections.generic;
namespace 漢諾塔問題_遞迴解決
///
/// 漢諾塔問題解決方法
///
/// 漢諾塔的層數
/// 承載最初圓盤的柱子
/// 起到中轉作用的柱子
/// 移動到的目標柱子
static
void
hannuo
(int n,
char a,
char b,
char c)
]從 -----> "
, n, a, c)
;//控制台輸出每次操作盤子的動向
}else
]從 -----> "
, n, a, c)
;hannuo
(n -
1, b, a, c)
;//將b柱子上的n-1個盤子移到c柱子上}}
}}
樹(tree)是n(n>=0)個結點的有限集。n=0時稱為空樹。在任意一棵非空樹中:(1)有且僅有乙個特定的稱為根(root)的結點;(2)當n>1時,其餘結點可分為m(m>o)個互不相交的有限集t1、t2、……、 tm,其中每乙個集合本身又是一棵樹,並且稱為根的子樹(subtree),如圖6-2-1所示。
一棵二叉樹是節點的乙個有限集合,該集合或者為空,或者是由乙個根節點加上兩顆分別稱為左子樹和右子樹的二叉樹組成。每棵子樹的根節點有且只有乙個前驅,可以由0個或多個後繼。因此,樹是遞迴定義的。
每個節點最多有兩棵子樹,即二叉樹不存在度大於2的節點。二叉樹的子樹有左右之分,其子樹的次序不能顛倒。
滿二叉樹:在一棵二叉樹中,如果所有分支節點都存在左子樹和右子樹,而且所有葉子節點都在同一層上。
完全二叉樹:如果一棵具有n個節點的二叉樹的結構與滿二叉樹的前n個節點的結構相同,稱為完全二叉樹。滿二叉樹是特殊的完全二叉
什麼是快排?
先從數列中取出乙個數作為基準數(通常取第乙個數)。
分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。
再對左右區間重複第二步,直到各區間只有乙個數
}歸併
分解:分解待排序的n個元素序列成各具n/2個元素的兩個子串行。
解決:使用歸併排序遞迴的排序兩個子串行。
合併:合併兩個已排序的子串行以產生已排序的答案。
個人總結第三週
時間過得很快,一眨眼乙個星期又到了結尾。這乙個星期感覺依舊很忙,但是又感覺收穫很小,時間被各種各樣的事情所充滿,真正坐下去學習的時間變得非常少。一上來又是免不了一頓矯情,感覺自己會的東西還是太少。這個星期馬克思進行了一次校內的作業,我們班的節目是朗誦詩歌加大合唱。下個星期就要四級考試了,心裡還是沒有...
第三週的總結
我的開篇前言 剛開始寫部落格總結的時候,總有點逃避的情緒,不知不覺寫總結已經成為了一種習慣。寫的時候既可以總結這一周的學習成果 學習心態以及一些其他的事情,還可以反思自己在學習工程中的不足和學習態度的問題。關於學習 自從經歷上一次面試失敗之後,就知道自己的水平到底有多麼的菜 哎!基礎不行 深度不行 ...
2019 03 11 03 17第三週總結
學習計畫大學四年需要完成的任務,0掛科,專業成績前十。大一下半學期完成機器學習基本內容,掌握基本的計算方法,乙個月至少看一本機器學習相關書籍,乙個月翻譯一篇 重點勾畫,思想方法吸取經驗。大二完成四級考試。大三考研,最低標準211大學研究生。大四完成畢業設計。時間安排,正常上課時間專心上課,爭取上課完...