Trong
khoa học máy tính,
cấu trúc dữ liệu mảng hoặc
mảng là một
cấu trúc dữ liệu bao gồm một nhóm các phần tử giá trị hoặc
biến, mỗi phần tử được xác định ít nhất bằng một chỉ số (index) hoặc khóa (key). Mảng được lưu theo cách có thể tính được vị trí của các phần tử từ giá trị của một
tuple chỉ số bằng một
biểu thức toán học.
[1][2][3]Thí dụ, một mảng có 10 biến số nguyên, với các chỉ số từ 0 đến 9, có thể lưu trong 10
word tại địa chỉ bộ nhớ 2000, 2004, 2008,... 2036. Do đó, phần tử có chỉ số i sẽ nằm ở địa chỉ 2000 + 4 × i.
[4]Do khái niệm
ma trận trong toán học có thể được biểu diễn bằng một bảng hai chiều nên đôi khi mảng hai chiều cũng được gọi là ma trận. Một số trường hợp, khái niệm vector được dùng để chỉ mảng, mặc dù
tuple là khái niệm chính xác hơn về mặt toán học. Mảng thường được dùng để hiện thực các bảng, nhất là
bảng tìm kiếm. Từ bảng đôi khi có cùng nghĩa với mảng.Mảng là một trong những cấu trúc dữ liệu cũ và quan trọng nhất, và hầu hết các chương trình đều dùng nó. Các cấu trúc dữ liệu khác cũng được hiện thực bằng mảng, thí dụ như
danh sách hoặc
chuỗi. Nó rất hiệu quả trong việc tận dụng cách đánh địa chỉ trên máy tính. Trong hầu hết các máy tính hiện đại và các
thiết bị lưu trữ ngoài, bộ nhớ là chuỗi một chiều các word, và chỉ số của nó chính là địa chỉ.
Bộ xử lý, đặc biệt là
bộ xử lý vector, thường tối ưu hóa các tác vụ trên mảng.Sự hữu dụng của mảng nằm ở chỗ chỉ số của các phần tử có thể tính toán được vào lúc
chương trình đang chạy. Tính năng này cho phép một lệnh lặp có thể xử lý một số lượng lớn các phần tử trong mảng. Do đó, các phần tử trong cấu trúc mảng cần phải có cùng kích thước và cùng kiểu dữ liệu. Tập hợp các bộ chỉ số và địa chỉ của các phần tử (cũng như công thức tính địa chỉ các phần tử) thường,
[3][5] nhưng không phải luôn luôn,
[2] cố định khi mảng đang được sử dụng.Khái niệm mảng thường dùng có nghĩa là
kiểu dữ liệu mảng được cung cấp bởi hầu hết các
ngôn ngữ lập trình cấp cao, nó bao gồm tập hợp các giá trị hoặc biến có thể lựa chọn bằng một hoặc nhiều chỉ số được tính toán trong lúc chạy. Kiểu dữ liệu mảng thường được hiện thực bằng cấu trúc mảng; tuy nhiên một số ngôn ngữ lập trình có thể hiện thực bằng
bảng băm,
cây tìm kiếm hoặc các cấu trúc dữ liệu khác.Khi mô tả các
giải thuật, khái niệm này cũng được dùng để chỉ
associative array hay mảng trừu tượng, một mô hình lý thuyết khoa học máy tính (
kiểu dữ liệu trừu tượng hay ADT) để sử dụng các tính chất thiết yếu của mảng.