數據結構從邏輯結構劃分爲:
(1)線性結構
元素之間爲一對一的線性關係,第一個元素無直接前驅,最後一個元素無直接後繼,其他元素都有一個直接前驅和直接後繼。
(2)非線性結構
元素之間爲一對多或多對多的非線性關係,每一個元素有多個直接前驅或多個直接後繼。
(3)集合結構
元素之間無任何關係,元素的排列無任何順序。算法
數據結構從存儲結構劃分爲:
(1)順序存儲(向量存儲)
全部元素存放在一片連續的存儲單元中,邏輯上相鄰的元素存放到計算機內存中仍然相鄰。數組
(2)鏈式存儲
全部元素存放在能夠不連續的存儲單元中,但元素之間的關係能夠經過地址肯定,邏輯上相鄰的元素存放到計算機內存後不必定是相鄰的。數據結構
(3)索引存儲
使用該方法存放元素的同時,還創建附加的索引表,索引表中的每一項稱爲索引項,索引項的通常形式是:(關鍵字,地址),其中的關鍵字是能唯一標識一個結點的那些數據項。
排序
---------------------------索引
算法應用中,排序算法確定會遇到,把元素按照某種邏輯排序。內存
選擇排序核心思想:循環選擇剩餘元素中最小者與要交換位置的元素比較。細化一點也是,首先找到數組中最小的那個元素,其次,將它和數組的第一個元素交換位置(若是第一個元素就是最小元素那麼它就和本身交換),再次,在剩下的元素中找到最小的元素,將它與數組的第二個元素交換位置。如此往復,直到整個數組排序。這個算法中交換的總次數是N,算法的時間效率取決於比較的次數。效率
插入排序核心思想:一張一張的來,將每一張牌插入到其餘已經有序的牌中的適當位置,插入前爲了給插入元素騰出空間,須要將其他全部元素在插入之間都向右移動一位。插入排序所需時間取悅於輸入中元素的初始順序。對於一個已知序列,適合插入排序。二叉樹
快速排序:把數組分紅2個子數組,將兩部分獨立排序,當兩個子數組都有序時整個數組也就天然有序了。循環
查找符號表方法
鏈表:每一個節點都存儲一個鍵值。
二叉樹:每一個節點都有兩個連接。
索引查找是在線性表(主表)的索引存儲結構上進行的,而索引存儲的基本思想是:首先將一個線性表(主表)按照必定的規則分紅若干個邏輯上的子表,併爲每一個子表分別創建一個索引項,由全部這些索引項獲得主表的一個索引表,而後,可採用順序或連接的方法來存儲索引表和各個子表。索引表中的每一個索引項一般包含三個域:一是索引值域,用來存儲標識對應子表的索引值,它至關於記錄的關鍵字,在索引表中由此索引值來唯一標識一個索引項(子表);二是子表的開始位置,用來存儲對應子表的第一個元素的存儲位置;三是子表的長度,用來存儲對應子表的元素個數
圖:最短路徑
二分查找:查找時,咱們先將被查找的鍵和子數組的中間鍵比較,若是被查找的鍵小於中間鍵,咱們就在左子數組中繼續查找, 若是大於咱們就在右子數組中繼續查找,不然中間鍵就是咱們要找的鍵