Doubly Linked List – Cấu trúc dữ liệu dạng Danh sách liên kết đôi

Một Doubly Linked List (Danh sách liên kết đôi) thì tương tự như Singly Linked List (Danh sách liên kết đơn), ngoại trừ việc mỗi phần tử có thêm một con trỏ (pointer) để trỏ tới phần tử ở trước nó.

Tiếp tục đọc

#data-structures, #linked-list-data-structure

Stack – Lớp Stack trong Java

Collection framework trong Java cung cấp một lớp Stack để mô hình hóa cấu trúc dữ liệu Stack. Lớp này cũng vẫn hoạt động dựa theo cơ chế LIFO (Last In First Out). Tức là, phần tử nào được thêm vào đầu tiên thì sẽ được lấy ra sau cùng.

Tiếp tục đọc

#data-structures, #java, #java-collections, #stack-data-structure

Stack – Cấu trúc dữ liệu ngăn xếp

Stack (Ngăn xếp) là một linear data structure. Stack hoạt động theo cơ chế LIFO (Last In First Out). Tức là, phần tử nào được thêm vào đầu tiên thì sẽ được lấy ra sau cùng.

Ví dụ, có một cái hộp đựng sách, quyển sách nào được đặt vào đầu tiên sẽ được lấy ra sau cùng. Quyển nào được đặt vào sau cùng sẽ được lấy ra đầu tiên vì nó nằm ngay trên bề mặt. Ở đây cái hộp đựng sách được hiểu như là một Stack (Ngăn xếp).

Tiếp tục đọc

#data-structures, #stack-data-structure

Linked List – Cấu trúc dữ liệu dạng Danh sách liên kết đơn

Singly Linked List (Danh sách liên kết đơn) hay nói ngắn gọn là Linked List là một linear data structure (giống như Array). Không giống như mảng, các thành phần trong danh sách liên kết không được lưu trữ ở các vị trí liên tiếp nhau trong bộ nhớ, mà chúng được liên kết bằng cách sử dụng pointer (con trỏ).

Tiếp tục đọc

#data-structures, #linked-list-data-structure

Array – Mảng trong Java

Trong Java, một mảng (array) là một tập hợp các phần tử có cùng kiểu dữ liệu. Nếu kiểu dữ liệu là kiểu nguyên thủy thì các phần tử có địa chỉ liên tiếp nhau trên bộ nhớ (memory). Nếu kiểu dữ liệu là dạng đối tượng của lớp, thì các đối tượng thực tế được lưu trữ trên bộ nhớ heap. Mảng có số phần tử cố định và bạn không thể thay đổi kích thước của nó.

Tiếp tục đọc

#array-data-structure, #data-structures, #java

Array – Cấu trúc dữ liệu dạng mảng

Một mảng (array) là một tập hợp các phần tử được lưu trữ liên tiếp nhau trong bộ nhớ. Ý tưởng của mảng là lưu trữ các phần tử cùng loại. Mỗi phần tử có thể được xác định bởi chỉ mục của chúng trong mảng.

Tiếp tục đọc

#array-data-structure, #data-structures

Binary Search (Tìm kiếm nhị phân)

Binary Search (Tìm kiếm nhị phân) được áp dụng cho mảng hoặc danh sách đã được sắp xếp, với kích thước tập dữ liệu lớn. Nó là một thuật toán tìm kiếm rất nhanh, vì độ phức tạp tính toán của nó chỉ là O(log n).

Tiếp tục đọc

#algorithms, #searching-algorithms

Linear Search (Tìm kiếm tuyến tính)

Linear Search (Tìm kiếm tuyến tính) là một thuật toán tìm kiếm cơ bản và rất đơn giản. Trong Linear Search, chúng ta tìm kiếm một phần tử hoặc giá trị trong một mảng nhất định bằng cách duyệt mảng từ đầu tới khi tìm thấy phần tử hoặc giá trị mong muốn.

Tiếp tục đọc

#algorithms, #searching-algorithms

Quick Sort (Sắp xếp nhanh)

Quick Sort cũng tuân theo quy tắc Divide and Conquer (Chia để trị), giống như Merge Sort, để sắp xếp một tập hợp số/phần tử nhất định theo phương pháp đệ quy.

Trong Quick Sort, tất cả các công việc nặng nhọc (sắp xếp phần tử) được thực hiện ngay trong quá trình dividing (chia) mảng thành các mảng con. Còn với Merge Sort công việc phần tử sắp xếp xảy ra trong quá trình merging (hợp nhất) các mảng con.

Tiếp tục đọc

#algorithms, #sorting-algorithms

Merge Sort (Sắp xếp trộn)

Merge Sort tuân theo quy tắc Divide and Conquer (Chia để trị) để sắp xếp một tập hợp số/phần tử nhất định theo phương pháp đệ quy, do đó tiêu tốn ít thời gian thực thi hơn.

Trong các bài viết trước về Bubble Sort, Insertion SortSelection Sort, cả 3 đều có thời gian chạy trong trường hợp xấu nhất là O(n2). Khi kích thước đầu vào tăng lên, cả 3 giải thuật này có thể mất nhiều thời gian để chạy.

Tiếp tục đọc

#algorithms, #sorting-algorithms