Bài đăng

Đang hiển thị bài đăng từ Tháng 7, 2019

Stack, Queue và Priority Queue trong Java (Phần 3)

Hình ảnh
Stack, Queue và Priority Queue trong Java Phần 3: Priority Queue 1.      Định nghĩa Priority Queue là gì? Priority Queue là một danh sách dạng biến thể của queue với thứ tự sắp xếp dựa trên mức độ ưu tiên của phần tử. Tức danh sách này có cấu trúc đưa vào và đưa ra giống queue, chỉ có một điểm khác là sau khi đưa vào thì nó sẽ đẩy phần tử mới vào vị trí phù hợp theo thứ tự giảm dần từ rear – có giá trị cao nhất, đến top – có giá trị thấp nhất. Nói một chút về giá trị ưu tiên (priority). Về mặt tổng quan, đó là một cách để sắp xếp công việc nào sẽ được thực hiện trước, công việc nào sẽ được thực hiện sau. Về mặt cụ thể, đây là chỉ số giúp cho ta biết được phần tử nào sẽ được đưa ra ngoài trước, phần tử nào sẽ được đưa ra ngoài sau. Theo quy tắc trong đây, giá trị nào được xem như là nhỏ nhất thì sẽ được thực hiện trước. (Lưu ý: Việc định giá trị của 1 phần tử lớn hay nhỏ không theo 1 công thức cụ thể, mà phụ thuộc vào từng bài toán khác nhau).  ...

Stack, Queue và Priority trong Java (phần 2)

Hình ảnh
Stack, Queue và Priority trong Java (phần 2) Phần 2: Queue Queue là gì? Queue là một cách thức lưu trữ và lấy dữ liệu theo kiểu hàng đợi. Bạn có thể tưởng tượng 1 hàng người đi mua vé, ai tới trước thì sẽ mua vé và ra trước Bạn có 5 người đang đứng đợi mua vé theo thứ tự từ trái sang lần lượt là 1, 2, 3, 4, 5. Người thứ 1 vào trước, người thứ 2 vào sau người thứ 1 và cứ như thế Khi đi ra, người thứ 1 (đi trước) sẽ là người ra trước, người thứ 2 sẽ đi ra thứ 2 và như thế Các bạn để ý một số điểm đặc biệt như sau Người vào trước (first) sẽ là người ra trước (first). Vì thế nó còn gọi là FIFO (First In First Out) Đứa chạy đầu tiên sẽ đặt vào vị trí front (trước), cho tới đứa chạy cuối cùng sẽ đặt vào vị trí sau (rear) Trong lập trình, người ta sử dụng nó để giải quyết một số bài toán đặc trưng Trong Java, có hỗ trợ một lớp Queue dùng để thực hiện kiểu lưu trữ và lấy thông tin như thế này Queue trong Java Queue trong Java nằm trong bộ Collection, là một inte...

Stack, Queue và Priority Queue trong Java (phần 1)

Hình ảnh
Stack, Queue và Priority Queue trong Java (phần 1) Phần 1: Stack Stack là gì? Stack là một cách thức lưu trữ và lấy dữ liệu theo kiểu xếp chồng. Để dễ hình dung, giả sử bạn có 1 thùng dựng sách có chiều dài và chiều rộng vừa với cuốn sách, và chiều cao vừa đủ. Bạn có 5 cuốn sách xếp theo thứ tự từ trái sang lần lượt là 1, 2, 3, 4, 5 Bây giờ, bạn đi lần lượt từ trái sang, mỗi lần đi đặt 1 cuốn sách vào thùng. Sau khi đi qua 5 cuốn sách, thùng sẽ như sau Các bạn để ý một số điểm đặc biệt như sau: 1. Khi đưa sách vào, ta chỉ có thể đặt cuốn sách mới lên trên cuốn sách cũ 2. Nếu ta lấy sách ra, ta phải lấy theo thứ tự: Từ cuốn sách đặt cuối cùng (last) lấy ra trước (first) cho đến cuốn sách đặt đầu tiên (first) lấy ra sau (last) =>Ta còn gọi nó là LIFO (Last In First Out – Vào cuối ra trước) 3. Thứ tự sách tính từ đỉnh (top) của stack tới đáy (bottom) của stack là 5, 4, 3, 2, 1 ngược với thứ tự ban đầu khi xếp từ trái sang 1, 2, 3, 4, 5 =>Đứa chạy ...