Mảng (Arrays) trong Java: Cấu trúc dữ liệu tuyến tính cơ bản
Chào mừng bạn đến với bài viết thứ ba trong series về cấu trúc dữ liệu và giải thuật. Trong bài viết này, chúng ta sẽ tìm hiểu về một cấu trúc dữ liệu cơ bản và quan trọng: Mảng (Arrays). Chúng ta sẽ khám phá khái niệm, cách hoạt động, ưu điểm và nhược điểm của mảng trong Java. Ví dụ code minh họa sẽ giúp bạn hiểu rõ hơn về cách sử dụng mảng.
Khái niệm về mảng
Mảng là một cấu trúc dữ liệu tuyến tính. Nó lưu trữ một tập hợp các phần tử có cùng kiểu dữ liệu. Các phần tử này được lưu trữ liên tiếp trong bộ nhớ. Mỗi phần tử trong mảng có một chỉ số (index) để truy cập.
Mảng một chiều
Mảng một chiều là dạng mảng đơn giản nhất. Nó là một danh sách các phần tử được sắp xếp theo một hàng duy nhất. Để truy cập một phần tử trong mảng một chiều, chúng ta sử dụng chỉ số của phần tử đó.
Cách hoạt động của mảng một chiều trong Java
Trong Java, mảng một chiều được khai báo bằng cách chỉ định kiểu dữ liệu của các phần tử và kích thước của mảng. Kích thước của mảng được cố định khi khai báo. Sau khi khai báo, chúng ta có thể truy cập và sửa đổi các phần tử trong mảng bằng cách sử dụng chỉ số.
Ví dụ code minh họa mảng một chiều trong Java
public class Main {
public static void main(String[] args) {
// Khai báo một mảng số nguyên có kích thước 5
int[] numbers = new int[5];
// Gán giá trị cho các phần tử trong mảng
numbers[0] = 10;
numbers[1] = 20;
numbers[2] = 30;
numbers[3] = 40;
numbers[4] = 50;
// Truy cập và in ra giá trị của phần tử có chỉ số 2
System.out.println("Phần tử tại chỉ số 2: " + numbers[2]);
// Duyệt mảng và in ra tất cả các phần tử
System.out.println("Các phần tử trong mảng:");
for (int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]);
}
}
}
Mảng hai chiều
Mảng hai chiều là một mảng các mảng. Nó có thể được hình dung như một bảng với các hàng và cột. Để truy cập một phần tử trong mảng hai chiều, chúng ta sử dụng hai chỉ số: một cho hàng và một cho cột.
Cách hoạt động của mảng hai chiều trong Java
Trong Java, mảng hai chiều được khai báo bằng cách chỉ định kiểu dữ liệu của các phần tử và số lượng hàng và cột. Tương tự như mảng một chiều, kích thước của mảng hai chiều được cố định khi khai báo.
Ví dụ code minh họa mảng hai chiều trong Java
public class Main {
public static void main(String[] args) {
// Khai báo một mảng hai chiều số nguyên có 3 hàng và 4 cột
int[][] matrix = new int[3][4];
// Gán giá trị cho các phần tử trong mảng
matrix[0][0] = 1;
matrix[0][1] = 2;
matrix[0][2] = 3;
matrix[0][3] = 4;
matrix[1][0] = 5;
matrix[1][1] = 6;
matrix[1][2] = 7;
matrix[1][3] = 8;
matrix[2][0] = 9;
matrix[2][1] = 10;
matrix[2][2] = 11;
matrix[2][3] = 12;
// Truy cập và in ra giá trị của phần tử tại hàng 1, cột 2
System.out.println("Phần tử tại hàng 1, cột 2: " + matrix[1][2]);
// Duyệt mảng và in ra tất cả các phần tử
System.out.println("Các phần tử trong mảng:");
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println();
}
}
}
Các thao tác cơ bản trên mảng
Có một số thao tác cơ bản mà chúng ta thường thực hiện trên mảng:
- Truy cập: Truy cập một phần tử cụ thể trong mảng bằng cách sử dụng chỉ số của nó.
- Duyệt: Duyệt qua tất cả các phần tử trong mảng, thường sử dụng vòng lặp.
- Tìm kiếm: Tìm kiếm một phần tử cụ thể trong mảng. Có nhiều thuật toán tìm kiếm khác nhau, chẳng hạn như tìm kiếm tuyến tính và tìm kiếm nhị phân.
Ví dụ code minh họa các thao tác cơ bản
public class Main {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5};
// Truy cập
int firstElement = numbers[0];
System.out.println("Phần tử đầu tiên: " + firstElement);
// Duyệt
System.out.println("Các phần tử trong mảng:");
for (int number : numbers) {
System.out.println(number);
}
// Tìm kiếm
int target = 3;
int index = -1;
for (int i = 0; i < numbers.length; i++) {
if (numbers[i] == target) {
index = i;
break;
}
}
if (index != -1) {
System.out.println("Tìm thấy " + target + " tại chỉ số " + index);
} else {
System.out.println("Không tìm thấy " + target + " trong mảng");
}
}
}
Ưu điểm và nhược điểm của mảng
Ưu điểm
- Truy cập ngẫu nhiên nhanh: Chúng ta có thể truy cập bất kỳ phần tử nào trong mảng một cách nhanh chóng bằng cách sử dụng chỉ số của nó. Thời gian truy cập là O(1).
- Đơn giản và dễ sử dụng: Mảng là một cấu trúc dữ liệu đơn giản và dễ hiểu.
Nhược điểm
- Kích thước cố định: Kích thước của mảng phải được xác định trước khi sử dụng và không thể thay đổi sau đó.
- Chèn và xóa chậm: Việc chèn hoặc xóa một phần tử ở giữa mảng đòi hỏi phải dịch chuyển các phần tử khác, làm chậm quá trình.
Kết luận
Mảng là một cấu trúc dữ liệu tuyến tính cơ bản và quan trọng trong Java. Nó cung cấp khả năng lưu trữ và truy cập các phần tử một cách hiệu quả. Mặc dù có một số nhược điểm, mảng vẫn là một lựa chọn tốt cho nhiều ứng dụng. Hãy tiếp tục khám phá các cấu trúc dữ liệu khác để mở rộng kiến thức của bạn và trở thành một lập trình viên giỏi hơn! Đừng quên thực hành code thường xuyên để nắm vững kiến thức.
0 Bình luận
Vui lòng đăng nhập để gửi bình luận.