Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java
Java
  1. Longest Common Subsequence (LCS) ใน Java: Dynamic Programming

    Longest Common Subsequence (LCS) หา ความยาว ของ subsequence ที่พบใน ทั้งสองสตริง (ไม่ต้องติดกัน ต้องเรียงลำดับเดียวกัน) ตัวอย่างโค้ด (DP 2D) public class Demo { // คืนความยาว LCS int lcsLength(char[] a, char[] b, int m, int n) { // dp[i][j] = LCS length ของ a[0..i-1] และ b[0..j-1]

  2. Longest Increasing Subsequence (LIS) ใน Java: Dynamic Programming

    Longest Increasing Subsequence (LIS) หา ความยาว ของ subsequence (ไม่ต้องติดกัน) ที่เพิ่มขึ้นอย่างเคร่งครัด (strictly increasing) และยาวที่สุด ตัวอย่างโค้ด (DP O(n²)) public class Demo { static int lisLength(int[] arr, int n) { // dp[i] = ความยาว LIS ที่ลงท้ายด้วย arr[i] int[]

  3. หาเลข K หลักมากที่สุดที่หาร X ลงตัว ใน Java

    ปัญหา หาเลขที่มี K หลัก (K-digit number) ที่ มากที่สุด และ หาร X ลงตัว ตัวอย่างโค้ด 999 int maxKDigit = (int) Math.pow(10, k) - 1; // หาตัวคูณของ X ที่ใกล้ maxKDigit มากที่สุด // = maxKDigit - (maxKDigit % X) return maxKDigit - (maxKDigit % x); }

  4. พิมพ์เลข 0-15 ใน Java โดยไม่ใช้ Loop (Recursion)

    การพิมพ์เลขโดยไม่ใช้ Loop ใช้ Recursion แทนการวนลูป: ฟังก์ชันเรียกตัวเองจนถึง base case ตัวอย่างโค้ด public class Demo { public static void main(String[] args) { int start = 0; System.out.println(พิมพ์เลข 0-15 โดยไม่ใช้ loop:); printWithoutLoop(start); Syste

  5. Array Rotation ใน Java: Juggling Algorithm (GCD)

    Juggling Algorithm สำหรับ Array Rotation อัลกอริทึมหมุนอาร์เรย์ที่ใช้ GCD (Greatest Common Divisor) แบ่งอาร์เรย์เป็น gcd(n, d) เซต แล้วหมุนในแต่ละเซตแยกกัน ทำได้ใน O(n) time, O(1) space ตัวอย่างโค้ด = n int gcd = gcd(d, n); for (int i = 0; i = n) k -= n; // wrap around

  6. โปรแกรม Java คำนวณปริมาตรทรงสี่หน้า (Tetrahedron)

    ทรงสี่หน้า (Tetrahedron) คืออะไร? Tetrahedron เป็นทรงหลายหน้า (Polyhedron) ที่มี 4 หน้าเป็นรูปสามเหลี่ยม 6 棱 (Edges) และ 4 จุดยอด (Vertices) เป็นทรงพลัตออนิก (Platonic Solid) ที่เรียบง่ายที่สุด สูตรปริมาตร สำหรับ Regular Tetrahedron (ทรงสี่หน้าปกติ - ทุกหน้าเป็นสามเหลี่ยมด้านเท่า ด้านยาว a): V = a³

  7. Recursive Bubble Sort ใน Java

    Recursive Bubble Sort คืออะไร? Bubble Sort แบบ Recursive: ผ่าน array วนลูปสลับค่าที่ผิดลำดับ (pass หนึ่ง) → ตัวมากที่สุดจะอยู่ท้าย → เรียก recursive กับ n-1 ตัวแรก ตัวอย่างโค้ด import java.util.Arrays; public class Demo { static void bubbleSort(int[] arr, int n) { // Base case

  8. Recursive Insertion Sort ใน Java

    Recursive Insertion Sort คืออะไร? Insertion Sort แบบ Recursive: เรียง n-1 ตัวแรก แล้ว insert ตัวที่ n เข้าไปในตำแหน่งที่ถูกต้อง ตัวอย่างโค้ด import java.util.Arrays; public class Demo { static void recursiveInsertionSort(int[] arr, int n) { // Base case: 0 หรือ 1 element เรียงแล้ว

  9. Reversal Algorithm สำหรับ Array Rotation ใน Java

    Reversal Algorithm คืออะไร? อัลกอริทึมหมุนอาร์เรย์ (Array Rotation) ด้วยการ กลับลำดับ (Reverse) 3 ครั้ง ทำได้ใน O(n) time และ O(1) space หลักการ (Left Rotation by d) Reverse ส่วนแรก: arr[0..d-1] Reverse ส่วนที่สอง: arr[d..n-1] Reverse ทั้งอาร์เรย์: arr[0..n-1] ตัวอย่างโค้ด n re

  10. Gnome Sort ใน Java: อัลกอริทึมเรียงลำดับแบบง่าย

    Gnome Sort คืออะไร? Gnome Sort (หรือ Stupid Sort) เป็นอัลกอริทึมเรียงลำดับที่ง่ายคล้าย Insertion Sort แต่ทำงานแบบ เดินไปมา ตรวจสอบค่าปัจจุบันกับค่าก่อนหน้า: = ค่าก่อนหน้า → เดินไปข้างหน้า (index++) ถ้าค่าปัจจุบัน < ค่าก่อนหน้า → สลับ แล้วเดินถอยหลัง (index--) ที่ index 0 → เดินไปข้างหน้าอัตโนมัติ

  11. Iterative Merge Sort ใน Java: แบบ Bottom-Up

    Iterative Merge Sort (Bottom-Up) Merge Sort แบบ Iterative เรียกว่า Bottom-Up Merge Sort เริ่มจาก merge subarray ขนาด 1 แล้วคูณ 2 ทีละขั้น จนครบ array ทั้งหมด ไม่ใช้ recursion ตัวอย่างโค้ด import java.util.Arrays; public class Demo { public static void mergeSort(int[] arr) { if (arr

  12. Iterative Quick Sort ใน Java: อัลกอริทึมและการทำงาน

    Iterative Quick Sort คืออะไร? Quick Sort แบบวนซ้ำ (Iterative) ใช้ Stack จำลองการเรียกฟังก์ชัน recursive แทนการใช้ call stack จริง ช่วยหลีกเลี่ยง StackOverflowError สำหรับข้อมูลขนาดใหญ่ ตัวอย่างโค้ด public class Demo { // สลับค่าสองตำแหน่ง void swap(int[] arr, int i, int j) { int t

  13. JVM Stack Area: โครงสร้าง การทำงาน และคุณสมบัติ

    JVM Stack Area จุดสำคัญ สร้าง stack แยกต่างหากสำหรับแต่ละ thread ตอนสร้าง thread JVM ทำได้แค่ 2 ออปเตอร์ชัน: push (เพิ่ม) และ pop (ลบ) Stack ของ thread ที่ทำงานอยู่ เรียกว่า Runtime Stack ทุกการเรียกเมธอด การคำนวณระหว่างทาง ตัวแปรท้องถิ่น พารามิเตอร์ → เก็บเป็น stack frame เมธอดจบ → stack frame นั้

  14. Max Heap ใน Java: ใช้งาน PriorityQueue แบบ descending

    Max Heap คืออะไร? Max Heap เป็น Binary Tree แบบสมบูรณ์ (Complete Binary Tree) ที่ค่าของแต่ละ parent node มีค่า = ค่าของ child nodes ทั้งคู่ เริ่มจาก root node เป็นค่าสูงสุด ตัวอย่าง: ใช้ PriorityQueue (Java Built-in) ใช้ reverseOrder() ทำให้เป็น Max Heap PriorityQueue maxHeap = new Priorit

  15. Memory Leak ใน Java: สาเหตุ ตัวอย่าง และการป้องกัน

    Memory Leak คืออะไร? ใน Java มี Garbage Collector (GC) จัดการหน่วยความจำอัตโนมัติ แต่ Memory Leak เกิดขึ้นเมื่อ: ออบเจกต์ยังมี reference ชี้อยู่ (ไม่ได้ถูกปล่อย) แต่โปรแกรมไม่ได้ใช้ออบเจกต์นั้นต่อไปแล้ว GC จึงไม่สามารถเก็บขยะออบเจกต์นั้นได้ สะสมมากพอ → OutOfMemoryError: Java heap space ตัวอย่าง:

  16. กลไก Runtime Stack ใน Java: การทำงานและตัวอย่าง

    แนวคิดพื้นฐาน ทุกครั้งที่ thread ทำงานใน Java จะมีการสร้าง Runtime Stack ขึ้นมาเพื่อจัดเก็บข้อมูลระหว่างการทำงานของ thread นั้นๆ คำสำคัญ Stack Frame / Activation Record - แต่ละรายการใน stack เรียกว่าสแต็กเฟรม หรือการเปิดใช้งาน บันทึกข้อมูลของแต่ละเมธอดที่ถูกเรียก LIFO (Last In, First Out) - ลำดับก

  17. การเขียนเมธอดว่าง (Empty Method) ใน Java

    ตัวอย่างโค้ด import java.util.Vector; public class Demo { public static void myEmptyFun() { // เมธอดว่าง - ไม่มีคำสั่งใดๆ ภายใน } public static void main(String[] args) { System.out.println(อยู่ในเมธอด main); myEmptyFun(); // เรียกเมธอดว่าง - ไม่เกิดอะ

Total 1935 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:72/97  20-คอมพิวเตอร์/Page Goto:1 66 67 68 69 70 71 72 73 74 75 76 77 78