資料結構和演算法是程式高效性的關鍵要素。 Java 中常用的資料結構包括陣列、鍊錶、堆疊和二元樹。常見演算法包括快速排序和二分查找。本文透過實戰案例,深入淺出地解釋這些概念:陣列:連續儲存同類型元素,如學生成績。鍊錶:元素透過指針鏈接,如模擬隊列。堆疊:遵循 LIFO 原則,如追蹤函數呼叫。二元樹:樹形資料結構,如檔案系統目錄。快速排序:分治策略,將陣列分成兩部分分別排序。二分查找:有序數組進行二分查找,縮小搜尋範圍。
Java 資料結構與演算法:實戰案例詳解
引言
數據結構和演算法是電腦科學的基礎,它們決定了程式的效率和穩健性。本文將透過一系列實戰案例,深入淺出地講解 Java 中常用的資料結構與演算法。
陣列
定義:連續記憶體空間中儲存同類型元素的集合。
實戰案例:儲存學生成績
int[] scores = {90, 85, 78, 95, 82};
鍊錶
定義:元素透過指標連結的線性資料結構。
實戰案例:模擬佇列
class Node { int value; Node next; } class Queue { Node head; Node tail; public void enqueue(int value) { Node newNode = new Node(); newNode.value = value; if (head == null) { head = newNode; tail = newNode; } else { tail.next = newNode; tail = newNode; } } public int dequeue() { if (head == null) { throw new RuntimeException("Queue is empty"); } int value = head.value; head = head.next; if (head == null) { tail = null; } return value; } }
堆疊
定義:遵循後進先出( LIFO) 原則的線性資料結構。
實戰案例:追蹤函數呼叫
class Stack<T> { private List<T> elements = new ArrayList<>(); public void push(T element) { elements.add(element); } public T pop() { if (elements.isEmpty()) { throw new RuntimeException("Stack is empty"); } return elements.remove(elements.size() -1); } public T peek() { if (elements.isEmpty()) { throw new RuntimeException("Stack is empty"); } return elements.get(elements.size() -1); } }
二叉樹
定義:包含一個根節點和零個或多個子節點的樹狀資料結構。
實戰案例:檔案系統目錄
class TreeNode { private String name; private List<TreeNode> children; // ... 其他代码 } class FileSystem { private TreeNode root; // ... 其他代码 }
#排序演算法
快速排序
描述:分治策略,將陣列分成兩部分,分別排序,然後合併。
實戰案例:排序一組數字
public static void quickSort(int[] arr) { if (arr == null || arr.length <= 1) { return; } int pivot = arr[0]; int leftIndex = 0; int rightIndex = arr.length - 1; while (leftIndex < rightIndex) { while (arr[rightIndex] >= pivot && rightIndex > leftIndex) { rightIndex--; } arr[leftIndex] = arr[rightIndex]; while (arr[leftIndex] <= pivot && rightIndex > leftIndex) { leftIndex++; } arr[rightIndex] = arr[leftIndex]; } arr[leftIndex] = pivot; quickSort(arr, 0, leftIndex - 1); quickSort(arr, leftIndex + 1, arr.length - 1); }
找出演算法
二分查找
說明:對有序數組進行二分查找,逐級縮小搜尋範圍。
實戰案例:找出陣列中的一個元素
public static int binarySearch(int[] arr, int target) { int left = 0; int right = arr.length - 1; while (left <= right) { int mid = (left + right) / 2; if (arr[mid] == target) { return mid; } else if (arr[mid] < target) { left = mid + 1; } else { right = mid - 1; } } return -1; }
以上是Java資料結構與演算法:實戰案例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!