[DSA] Mảng trong C
Mảng là một cấu trúc dữ liệu cơ bản trong ngôn ngữ lập trình C, được sử dụng để lưu trữ một tập hợp các giá trị dưới dạng các phần tử liên tiếp trên bộ nhớ.
1. Cách khai báo mảng trong C:
Đây là một ví dụ về cách khai báo một mảng trong C:
int myArray[5]; // Khai báo mảng 'myArray' gồm 5 phần tử kiểu intTrong các ví dụ trên, chúng ta đã khai báo ba mảng khác nhau với các kích thước và kiểu dữ liệu khác nhau. Chúng ta cũng có thể khai báo mảng đa chiều (multidimensional arrays) bằng cách sử dụng cú pháp sau:
float prices[10]; // Khai báo mảng 'prices' gồm 10 phần tử kiểu float
char message[50]; // Khai báo mảng 'message' gồm 50 phần tử kiểu char
int myMatrix[3][3]; // Khai báo ma trận 3x3, tức là một mảng đa chiều có 3 hàng và 3 cộtChúng ta có thể khởi tạo giá trị cho mảng ngay khi khai báo bằng cách sử dụng cú pháp sau:
float myTable[4][5]; // Khai báo bảng 4x5, tức là một mảng đa chiều có 4 hàng và 5 cột
int myNumbers[5] = {2, 4, 6, 8, 10}; // Khai báo và khởi tạo mảng 'myNumbers' với 5 phần tử và giá trị ban đầu là 2, 4, 6, 8, 10
char myString[6] = "Hello"; // Khai báo và khởi tạo mảng 'myString' với 6 phần tử và giá trị ban đầu là "Hello"
Lưu ý rằng kích thước của mảng phải được xác định trước khi khai báo, và một khi đã khai báo, kích thước của mảng không thể thay đổi.
2. Những phép toán cơ bản:
- Gán giá trị: sử dụng toán tử gán "=" để gán giá trị cho các phần tử của mảng. Ví dụ: myArray[0] = 10;
- Truy xuất giá trị: sử dụng toán tử "[]" để truy xuất giá trị của các phần tử của mảng. Ví dụ: int x = myArray[0];
- Khởi tạo giá trị: có thể khởi tạo giá trị cho mảng ngay khi khai báo bằng cách sử dụng dấu "{}". Ví dụ: int myArray[5] = {1, 2, 3, 4, 5};
- Duyệt mảng: sử dụng vòng lặp để duyệt qua tất cả các phần tử của mảng. Ví dụ:
for (int i = 0; i < 5; i++) {
printf("%d ", myArray[i]);
} - Sắp xếp mảng: sử dụng các thuật toán sắp xếp như Bubble Sort, Selection Sort, Insertion Sort, Quick Sort, Merge Sort, Heap Sort để sắp xếp các phần tử trong mảng.
- Tính toán trung bình cộng: sử dụng vòng lặp để tính toán tổng các phần tử trong mảng, sau đó chia cho số phần tử để tính toán giá trị trung bình. Ví dụ:
int sum = 0;
for (int i = 0; i < 5; i++) {
sum += myArray[i];
}
float average = (float)sum / 5.0; - Tìm kiếm phần tử: sử dụng các thuật toán tìm kiếm như Linear Search, Binary Search để tìm kiếm một phần tử trong mảng.
2. Những điều cần chú ý khi làm việc với mảng trong C
- Các phần tử trong mảng được lưu trữ liên tiếp trên bộ nhớ, do đó mảng yêu cầu một không gian liên tục trên bộ nhớ.
- Truy cập các phần tử trong mảng được thực hiện thông qua chỉ số của phần tử. Chỉ số bắt đầu từ 0 đến n-1 (n là kích thước của mảng).
- Mảng có thể được sử dụng để lưu trữ dữ liệu theo thứ tự và thực hiện các phép toán trên các phần tử trong mảng một cách nhanh chóng.
- Mảng có thể được truyền vào hàm dưới dạng tham số, cho phép thực hiện các thao tác trên mảng trong hàm và trả về kết quả.
- Mảng không thể được chèn hoặc xóa các phần tử dễ dàng hơn so với danh sách liên kết.
- Khi khai báo một mảng trong C, kích thước của mảng phải được xác định trước và không thể thay đổi trong quá trình thực thi.
- Mảng có thể dễ dàng truy cập các phần tử liên tiếp, nhưng truy cập các phần tử ngẫu nhiên trong mảng có thể tốn nhiều thời gian hơn.
- Mảng trong C không cung cấp tính năng bảo mật và không kiểm tra vượt quá giới hạn của mảng, do đó, việc truy cập phần tử ngoài giới hạn mảng có thể dẫn đến các lỗi nghiêm trọng như tràn bộ đệm hoặc xung đột bộ nhớ.
3. Ưu điểm của mảng:
- Truy cập nhanh: Truy cập các phần tử trong mảng nhanh chóng vì các phần tử được lưu trữ liên tục trên bộ nhớ.
- Xử lý dữ liệu dễ dàng: Mảng cho phép xử lý dữ liệu theo thứ tự và thực hiện các phép toán trên các phần tử trong mảng một cách nhanh chóng.
- Đơn giản: Mảng là một cấu trúc dữ liệu đơn giản và dễ sử dụng.
- Truyền tham số dễ dàng: Mảng có thể được truyền vào hàm dưới dạng tham số, cho phép thực hiện các thao tác trên mảng trong hàm và trả về kết quả.
- Sử dụng bộ nhớ hiệu quả: Mảng có thể được sử dụng để lưu trữ các giá trị liên tục trên bộ nhớ một cách hiệu quả.
4. Khuyết điểm của mảng:
- Không linh hoạt: Kích thước của mảng được xác định trước khi chạy chương trình và không thể thay đổi trong quá trình thực thi.
- Không thể thêm, xóa phần tử: Mảng không cung cấp tính năng thêm, xóa phần tử dễ dàng hơn so với danh sách liên kết.
- Không an toàn: Mảng trong C không cung cấp tính năng bảo mật và không kiểm tra vượt quá giới hạn của mảng, do đó, việc truy cập phần tử ngoài giới hạn mảng có thể dẫn đến các lỗi nghiêm trọng như tràn bộ đệm hoặc xung đột bộ nhớ.
- Số lượng phần tử bị giới hạn: Kích thước của mảng phụ thuộc vào khả năng của bộ nhớ, do đó số lượng phần tử trong mảng có thể bị giới hạn.
Không có nhận xét nào