二分查詢:又稱為折半查詢,適用於排好序的順序表。
基本思路:首先將給定的查詢值k,與表中的中間位置的元素的關鍵字進行比較,若相等,則返回該元素的位置;若不等,表明所需查詢的元素只能在中間元素的前半部分或者後半部分中;然後在縮小的範圍中繼續同樣的查詢,如此反覆直到找到為止。
實現方式:遞迴實現和非遞迴實現
1、二叉查詢樹
特點:左子樹上所有結點的值均小於或等於它的根結點的值。右子樹上所有結點的值均大於或等於它的根結點的值。左、右子樹也分別為二叉排序樹。
2、b-tree:
b-tree樹即b樹,b即balanced,平衡的意思。b-樹是一種多路搜尋樹(並不一定是二叉的)---平衡多叉樹
乙個m階的b樹具有如下幾個特徵:
1.根結點至少有兩個子女。
2.每個中間節點都包含k-1個元素和k個孩子,其中 m/2 <= k <= m
3.每乙個葉子節點都包含k-1個元素,其中 m/2 <= k <= m
4.所有的葉子結點都位於同一層。
5.每個節點中的元素從小到大排列,節點當中k-1個元素正好是k個孩子包含的元素的值域分劃。
優點:b樹比二叉樹強的地方就在於,同樣的資料,b樹更矮胖,以及b樹可以達到自平衡結構。
3、b+tree
概述:b+ 樹是一種樹資料結構,是乙個n叉排序樹,每個節點通常有多個孩子,一棵b+樹包含根節點、內部節點和葉子節點。根節點可能是乙個葉子節點,也可能是乙個包含兩個或兩個以上孩子節點的節點。
特點:1.有k個子樹的中間節點包含有k個元素(b樹中是k-1個元素),每個元素不儲存資料,只用來索引,所有資料都儲存在葉子節點。
2.所有的葉子結點中包含了全部元素的資訊,及指向含這些元素記錄的指標,且葉子結點本身依關鍵字的大小自小而大順序鏈結。
3.所有的中間節點元素都同時存在於子節點,在子節點元素中是最大(或最小)元素。
4、紅黑樹
概述:紅黑樹(red black tree) 是一種自平衡二叉查詢樹,是在電腦科學中用到的一種資料結構
特點:1.節點是紅色或黑色。
2.根節點是黑色。
3.每個葉子節點都是黑色的空節點(nil節點)。
4.每個紅色節點的兩個子節點都是黑色。(從每個葉子到根的所有路徑上不能有兩個連續的紅色節點)
5.從任一節點到其每個葉子的所有路徑都包含相同數目的黑色節點。
5、跳躍表
概念:是一種隨機化資料結構,基於併聯的鍊錶,其效率可比擬於二叉查詢樹(對於大多數操作需要o(log n)平均時間),並且對併發演算法友好。
應用:skip list(跳表)是一種可以代替平衡樹的資料結構,預設是按照key值公升序的。skip list讓已排序的資料分布在多層鍊錶中,以0-1隨機數決定乙個資料的向上攀公升與否,通過「空間來換取時間」的乙個演算法,在每個節點中增加了向前的指標,在插入、刪除、查詢時可以忽略一些不可能涉及到的結點,從而提高了效率。
make 學習體會 一
在對makefile進行了部分學習後,感覺到還是多看看簡短的例子比較好。hellomake.c 複製 include int main 複製 hellofunc.c 複製 include include void myprinthellomake void 複製 hellomake.h exampl...
第九周助教心得體會
本週為我參加助教工作的第九周。本週同學們要繼續完成第二次團隊作業 已提交12組 本次團隊作業鏈結 在該團隊撰寫的需求分析報告有病句,內容敷衍不充實。上週通知了部分團隊修改readme.md文件的內容,一周後對未予回覆,內容無修改的團隊再次警告,並扣除團隊分數2分。本次團隊作業中沒有需求分析報告,並且...
第九周學習筆記
主要內容 1.文章解決了什麼問題?svm訓練演算法在大規模問題上收斂很慢,且十分複雜 難以實現,運算過程中需要維持乙個n 2n 2 n2個元素的矩陣,當年 1998 問題規模超過4000個樣本時,就超過了當時的記憶體大小 128mb 曾經的訓練演算法之一的chunking使得演算法從維持n 2n 2...