1. 程式人生 > >基礎的數據結構有哪些?

基礎的數據結構有哪些?

元素 大於 步驟 partition span 運行 可能 位置 遍歷

數據結構是以某種形式將數據組織在一起的集合,不僅存儲數據, 還支持訪問和處理數據的操作.

基礎的數據結構有:線性表(數組,鏈表),棧與隊列,樹與二叉樹,圖等

1. 冒泡

冒泡排序的思想: 每次比較兩個相鄰的元素, 如果他們的順序錯誤就把他們交換位置。

快速排序使用分治法策略來把一個序列分為兩個子序列。

步驟:

從數列中挑出一個元素,稱為 "基準"(pivot),

重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面(相同的數可以到任一邊)。在這個分割結束之後,該基準就處於數列的中間位置。這個稱為分割(partition)操作。

遞歸地(recursive)把小於基準值元素的子數列和大於基準值元素的子數列排序。

2.深度優先遍歷和廣度優先遍歷的區別?

1) 二叉樹的深度優先遍歷的非遞歸的通用做法是采用棧,廣度優先遍歷的非遞歸的通用做法是采用隊列。

2) 深度優先遍歷:對每一個可能的分支路徑深入到不能再深入為止,而且每個結點只能訪問一次。要特別註意的是,二叉樹的深度優先遍歷比較特殊,可以細分為先序遍歷、中序遍歷、後序遍歷。具體說明如下:

? 先序遍歷:對任一子樹,先訪問根,然後遍歷其左子樹,最後遍歷其右子樹。

? 中序遍歷:對任一子樹,先遍歷其左子樹,然後訪問根,最後遍歷其右子樹。

? 後序遍歷:對任一子樹,先遍歷其左子樹,然後遍歷其右子樹,最後訪問根。

廣度優先遍歷:又叫層次遍歷,從上往下對每一層依次訪問,在每一層中,從左往右(也可以從右往左)訪問結點,訪問完一層就進入下一層,直到沒有結點可以訪問為止。   

3)深度優先搜素算法:不全部保留結點,占用空間少;有回溯操作(即有入棧、出棧操作),運行速度慢。

廣度優先搜索算法:保留全部結點,占用空間大; 無回溯操作(即無入棧、出棧操作),運行速度快。

通常 深度優先搜索法不全部保留結點,擴展完的結點從數據庫中彈出刪去,這樣,一般在數據庫中存儲的結點數就是深度值,因此它占用空間較少。所以,當搜索樹的結點較多,用其它方法易產生內存溢出時,深度優先搜索不失為一種有效的求解方法。  

廣度優先搜索算法,一般需存儲產生的所有結點,占用的存儲空間要比深度優先搜索大得多,因此,程序設計中,必須考慮溢出和節省內存空間的問題。但廣度優先搜索法一般無回溯操作,即入棧和出棧的操作,所以運行速度比深度優先搜索要快些

基礎的數據結構有哪些?