演算法是解決問題的步驟集合,資料結構是有序儲存資料的組織方式,它們對於編寫高效程式至關重要。演算法常見類型包括搜尋、排序和圖論演算法。資料結構類型包括陣列、鍊錶、堆疊、佇列和集合。實戰應用中,可使用棧解決括號匹配問題,使用佇列解決生產者-消費者問題。
Java 基礎入門到實戰應用:演算法與資料結構實戰應用
什麼是演算法與資料結構?
演算法是解決特定問題的步驟集合,而資料結構是有組織地儲存和組織資料的方式。它們對於編寫高效且強大的程式至關重要。
常見演算法類型
常見資料結構類型
實戰案例:
使用堆疊解決括號匹配問題
考慮一個帶有各種類型的括號的字串,例如圓括號、方括號和大括號。為了檢查字串是否有效(所有括號都成對且正確匹配),我們可以使用堆疊。
Java 程式碼:
import java.util.Stack; public class BracketMatcher { public static boolean isBalanced(String str) { Stack<Character> stack = new Stack<>(); for (char c : str.toCharArray()) { if (isOpen(c)) { stack.push(c); } else if (isClose(c)) { if (stack.isEmpty() || !isMatch(stack.pop(), c)) { return false; } } } return stack.isEmpty(); } private static boolean isOpen(char c) { return c == '(' || c == '[' || c == '{'; } private static boolean isClose(char c) { return c == ')' || c == ']' || c == '}'; } private static boolean isMatch(char open, char close) { return (open == '(' && close == ')') || (open == '[' && close == ']') || (open == '{' && close == '}'); } public static void main(String[] args) { String str1 = "()[]{}"; String str2 = "([)]"; System.out.println(isBalanced(str1)); // true System.out.println(isBalanced(str2)); // false } }
使用佇列解決生產者-消費者問題
考慮一個生產者和消費者執行緒共享一個隊列。生產者線程向隊列中添加商品,而消費者線程從隊列中移除商品。為了確保線程安全和避免競爭條件,我們可以使用佇列。
Java 程式碼:
import java.util.concurrent.ArrayBlockingQueue; public class ProducerConsumer { private ArrayBlockingQueue<Integer> queue; public ProducerConsumer(int capacity) { queue = new ArrayBlockingQueue<>(capacity); } // 生产者线程 public void produce(int item) { try { queue.put(item); } catch (InterruptedException e) { e.printStackTrace(); } } // 消费者线程 public int consume() { try { return queue.take(); } catch (InterruptedException e) { e.printStackTrace(); return -1; // 作为错误标志 } } public static void main(String[] args) { ProducerConsumer pc = new ProducerConsumer(5); new Thread(() -> { for (int i = 0; i < 10; i++) { pc.produce(i); } }).start(); new Thread(() -> { while (true) { int item = pc.consume(); if (item == -1) { break; // 队列为空 } System.out.println("Consumed: " + item); } }).start(); } }
以上是Java基礎入門到實戰應用:演算法與資料結構實戰應用的詳細內容。更多資訊請關注PHP中文網其他相關文章!