1. 程式人生 > >Java資料結構和演算法(一)線性結構

Java資料結構和演算法(一)線性結構

Java資料結構和演算法(一)線性結構

資料結構與演算法目錄(https://www.cnblogs.com/binarylei/p/10115867.html)

線性表 是一種邏輯結構,相同資料型別的 n 個數據元素的有限序列,除第一個元素外,每個元素有且僅有個直接前驅,除最後一個元素外,每個元素有且僅有一個直接後繼。

一、基本概念

線性表具有以下特點:

  • 元素個數有限
  • 邏輯上元素有先後次序
  • 資料襟型相同
  • 僅討論元素間的邏輯關係

線性表分類

(1) 陣列和連結串列

選項 陣列 連結串列
讀取 O(1) O(n)
插入 O(n) O(1)
刪除 O(n) O(1)

從上表可以看出陣列的讀取複雜度為 O(1),插入和刪除為 O(n),連結串列則恰好相反。即陣列讀快寫慢,連結串列讀慢寫快。

陣列的優點:一是隨機訪問性強;二是查詢速度快。
陣列的缺點:一是插入和刪除效率低;二是可能浪費記憶體;三是記憶體空間要求高,必須有足夠的連續記憶體空間;四是陣列大小固定,不能動態拓展。

連結串列的優點:一是插入刪除速度快;二是記憶體利用率高,不會浪費記憶體;三是大小沒有固定,拓展很靈活。
連結串列的缺點:一是不能隨機查詢,必須從第一個開始遍歷,查詢效率低。

(2) 單鏈表、雙向連結串列和迴圈連結串列

單鏈表和雙向連結串列的區別在於單鏈表的每個節點只儲存後繼節點,而雙向連結串列即儲存了後繼節點也儲存了前驅節點。而迴圈連結串列的第一個節點的指標指向最後一個節點,最後一個節點的指標指向第一個節點,迴圈連結串列又分為迴圈單鏈表和迴圈雙鏈表。

單鏈表和雙向連結串列

基本概念:陣列和連結串列的區別,單鏈表,雙向連結串列和迴圈連結串列單鏈表基本操作實戰之單鏈表反轉,單鏈表取中間值實戰之合併兩個有序連結串列面試真題:奇數位升序,偶數位降序連結串列排序面試真題:單鏈表實現歸併排序


每天用心記錄一點點。內容也許不重要,但習慣很重要!