清華大學《資料結構與演算法》筆記(從01-E-1到01-E-9)
01-E-1. 迭代與遞迴
空間複雜度,一般考量的,都是除了必要的輸入輸出以外的部分。
01-E-2 減而治之
01-E-3: 遞迴跟蹤
01-E-4:遞推方程
01-E-5: 陣列倒置
01-E-6: 分而治之
01-E-7:二分遞迴:陣列求和
01-E-8: 二分遞迴:max2
01-E-9: MAX2: 二分遞迴
相關推薦
資料結構與演算法筆記(二)複雜度分析
2. 複雜度分析 2.1 什麼是複雜度分析 資料結構和演算法的本質:快和省,如何讓程式碼執行得更快、更省儲存空間。 演算法複雜度分為時間複雜度和空間複雜度,從執行時間和佔用空間兩個維度來評估資料結構和演算法的效能。 複雜度描述的是演算法執行時間(或佔用空間)與資料規模的增長關
資料結構與演算法筆記(三)陣列
3.陣列 陣列(Array)是一種線性表資料結構。它是一組連續的記憶體空間,來儲存一組具有相同型別的資料。 3.1 特性 線性表 資料排成像一條線的結構,如陣列、連結串列、佇列、棧等。 與之相對立的是非線性,如二叉樹、堆、圖等,其資料之間並不是簡單的前後關係。
資料結構與演算法筆記(三)反轉部分連結串列
反轉部分連結串列 上次我們搞定了反轉單向連結串列和雙向連結串列的問題,但實際過程中我們可能只要反轉部分連結串列,在這種情況下我們需要對上次寫出的類增加一個叫做reverse_part_linklist的函式,傳入引數為兩個整數from和to,將from到to之間的節點進行反轉
javascript資料結構與演算法筆記(一):棧
javascript資料結構與演算法筆記(一):棧 一:簡介 二:ES6版Stack類(陣列) 三:ES版Stack類私有屬性的封裝 1.偽私有屬性封裝 2.真私有屬性封裝
javascript資料結構與演算法筆記(六):雙向連結串列
javascript資料結構與演算法筆記(六):雙向連結串列 一:簡介 二:ES6版DoublyLinkedList類 一:簡介 雙向連結串列和普通連結串列的區別在於,在連結串列中,一個節點只有鏈向下一個節點的連結,而
javascript資料結構與演算法筆記(五):連結串列
javascript資料結構與演算法筆記(五):連結串列 一:簡介 二:ES6版LinkedList類 一:簡介 連結串列儲存有序的元素集合,但不同於陣列,連結串列中的元素在記憶體中並不是連續放置的。每個 元素由一個儲
javascript資料結構與演算法筆記(四):迴圈佇列
javascript資料結構與演算法筆記(四):迴圈佇列 一:簡介 二:ES6版Queue類 一:簡介 迴圈佇列是指佇列頭元素的移除會追加到佇列的尾部。我們此次拿一個例子來實現迴圈佇列,例子名就是模擬民間遊戲擊鼓傳花即
javascript資料結構與演算法筆記(三):優先佇列
javascript資料結構與演算法筆記(三):優先佇列 一:簡介 二:ES6版PriorityQueue類 一:簡介 優先佇列是元素的新增和移除是基於優先順序的。一個現實的例子就是機場登機的順序。頭等艙和商務艙乘客的
javascript資料結構與演算法筆記(二):普通佇列
javascript資料結構與演算法筆記(二):普通佇列 一:簡介 二:ES6版Queue類 一:簡介 佇列是遵循FIFO( First In First Out, 先進先出,也稱為先來先服務)原則的一組有序的項。 佇
資料結構與演算法筆記(三) 線性表(鏈式描述) 連結串列
在鏈式描述中,線性表元素的位置在記憶體中是隨機的,每個元素都有一個明確的指標指向線性表的下一個元素的位置。 1.單向連結串列: 資料物件的每一個元素都用一個單元或者節點來描述,每個節點都明確包含另一個相關節點的位置資訊。 線性表的鏈式描述圖如下所示: 每個節點只有
資料結構與演算法入門(1)
一、資料結構 資料之間相互存在的一種或多種特定的關係的元素的集合。 邏輯結構 資料物件中資料元素之間的相互關係 1.集合結構 在資料結構中,如果不考慮資料元素之間的關係,這種結構稱為集合結構。 各個元素是平等的,共同屬性是屬於同一個集合 2.線性結構 線性結構中的資料元素之間
Python 資料結構與演算法——列表(連結串列,linked list)
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
資料結構與演算法--排序(冒泡、選擇、歸併、快速排序、堆排序)
/** * 氣泡排序 * @param arr */ function bubbleSort(arr) { let len = arr.length; for (let i =0; i < arr.len; i++) { for (l
基礎資料結構與演算法實現(2)—二叉搜尋樹BST
import java.util.LinkedList; import java.util.Queue; public class BST <E extends Comparable<E>> { private c
資料結構與演算法複習(15)—— 博弈論
一批文章: http://hi.baidu.com/liveroom/blog/category/%B2%A9%DE%C4%C2%DB http://blog.csdn.net/logic_nut/archive/2009/10/21/4706649.aspx http://blog.csdn.net/lo
資料結構與演算法複習(10)—— 字尾陣列與字串問題
放此待查。 RMQ 問題 http://www.notonlysuccess.com/?p=356 利用字尾陣列求解一個字串中最長重複子串問題 http://cylixstar.blogbus.com/logs/28350301.html http://imlazy.ycool.com/post.20118
資料結構與演算法複習(3)—— 線段樹
http://www.cppblog.com/MemoryGarden/archive/2009/04/11/79565.aspx http://www.notonlysuccess.com/?p=59 http://edu.codepub.com/2009/1125/18163.php POJ 2104,
資料結構與演算法總結(六)詞典
詞典結構:dict允許多個詞條擁有相同的關鍵碼。詞條為關鍵碼與值的合成結構。 對映結構:map要求不同詞條的關鍵碼互不相同。 例如跳轉表:一種高效的詞典結構,基於列表構造,時間複雜度為O(logn)。就是橫層連結串列代表關鍵碼,縱向列表代表值。一個關鍵碼代表多個一樣的值。 詞典dict操
資料結構與演算法複習(22)—— 樹狀陣列
需要熟練掌握,下面是不錯的文章: 樹狀陣列上的二分法 http://cylixstar.blogbus.com/logs/54695632.html 我的標籤: 樹狀陣列 http://www.cnblogs.com/zgmf_x20a/tag/%e6%a0%91%e7%8a%b6%e6%95%b0%e7%
資料結構與演算法複習(20)—— KMP 與字串演算法及其擴充套件
務必非常熟悉 KMP 演算法。 http://richardxx.yo2.cn/articles/kmp%e5%92%8cextend-kmp%e7%ae%97%e6%b3%95.html http://richardxx.yo2.cn/articles/%e5%ad%97%e7%ac%a6%e4%b8%b