Algoritma ialah satu set langkah untuk menyelesaikan masalah, dan struktur data ialah cara yang teratur untuk menyimpan data dalam cara yang teratur Ia adalah penting untuk menulis program yang cekap. Jenis algoritma biasa termasuk algoritma carian, pengisihan dan teori graf. Jenis struktur data termasuk tatasusunan, senarai terpaut, tindanan, baris gilir dan set. Dalam aplikasi praktikal, tindanan boleh digunakan untuk menyelesaikan masalah padanan kurungan, dan baris gilir boleh digunakan untuk menyelesaikan masalah pengeluar-pengguna.
Asas Java kepada Aplikasi Praktikal: Aplikasi Praktikal Algoritma dan Struktur Data
Apakah algoritma dan struktur data?
Algoritma ialah himpunan langkah untuk menyelesaikan masalah tertentu, manakala struktur data ialah cara menyimpan dan menyusun data yang teratur. Mereka adalah penting untuk menulis program yang cekap dan berkuasa.
Jenis algoritma biasa
Jenis struktur data biasa
Kes praktikal:
Menggunakan tindanan untuk menyelesaikan masalah padanan kurungan
Pertimbangkan rentetan dengan pelbagai jenis kurungan, seperti kurungan bulat, kurungan segi empat sama dan kurungan kerinting. Untuk menyemak sama ada rentetan itu sah (semua kurungan adalah berpasangan dan dipadankan dengan betul) kita boleh menggunakan tindanan.
Kod 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 } }
Menggunakan baris gilir untuk menyelesaikan masalah pengeluar-pengguna
Pertimbangkan benang pengeluar dan pengguna berkongsi baris gilir. Urutan pengeluar menambah item pada baris gilir dan urutan pengguna mengalih keluar item daripada baris gilir. Untuk memastikan keselamatan benang dan mengelakkan keadaan perlumbaan, kami boleh menggunakan baris gilir.
Kod 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(); } }
Atas ialah kandungan terperinci Pengenalan kepada Asas Java kepada Aplikasi Praktikal: Aplikasi Praktikal Algoritma dan Struktur Data. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!