Mảng la gì

Mảng (Array) là một trong các cấu trúc dữ liệu quan trọng nhất. Mảng có thể lưu giữ một số phần tử cố định và các phần tử này nền có cùng kiểu. Hầu hết các cấu trúc dữ liệu đều sử dụng mảng để triển khai giải thuật. Dưới đây là các khái niệm quan trọng liên quan tới Mảng.

  • Phần tử: Mỗi mục được lưu giữ trong một mảng được gọi là một phần tử.

  • Chỉ mục (Index): Mỗi vị trí của một phần tử trong một mảng có một chỉ mục số được sử dụng để nhận diện phần tử.

Mảng gồm các bản ghi có kiểu giống nhau, có kích thước cố định, mỗi phần tử được xác định bởi chỉ số

Mảng là cấu trúc dữ liệu được cấp phát lien tục cơ bản

Ưu điểm của mảng :

Truy câp phàn tử vơi thời gian hằng số O(1)

Sử dụng bộ nhớ hiệu quả

Tính cục bộ về bộ nhớ

Nhược điểm

Không thể thay đổi kích thước của mảng khi chương trình dang thực hiện



Mảng động

Mảng động (dynamic aray) : cấp phát bộ nhớ cho mảng một cách động trong quá trình chạy chương trình trong C là malloc và calloc, trong C++ là new

Sử dụng mảng động ta bắt đầu với mảng có 1 phàn tử, khi số lượng phàn tử vượt qua khả năng của ảng thì ta gấp đôi kích thước mảng cuc và copy phàn tử mảng cũ vào nửa đầu của mảng mới

Ưu điểm : tránh lãng phí bộ nhớ khi phải khai báo mảng có kích thước lớn ngay từ đầu

Nhược điểm: + phải thực hiện them thao tác copy phần tử mỗi khi thay đổi kích thước. + một số thời gian thực hiện thao tác không còn là hằng số nữa


Biểu diễn Cấu trúc dữ liệu mảng

Mảng có thể được khai báo theo nhiều cách đa dạng trong các ngôn ngữ lập trình. Để minh họa, chúng ta sử dụng phép khai báo mảng trong ngôn ngữ C:

Mảng la gì

Hình minh họa phần tử và chỉ mục:

Mảng la gì

Dưới đây là một số điểm cần ghi nhớ về cấu trúc dữ liệu mảng:

  • Chỉ mục bắt đầu với 0.

  • Độ dài mảng là 10, nghĩa là mảng có thể lưu giữ 10 phần tử.

  • Mỗi phần tử đều có thể được truy cập thông qua chỉ mục của phần tử đó. Ví dụ, chúng ta có thể lấy giá trị của phần tử tại chỉ mục 6 là 27.



Phép toán cơ bản được hỗ trợ bởi mảng

Dưới đây là các hoạt động cơ bản được hỗ trợ bởi một mảng:

  • Duyệt: In tất cả các phần tử mảng theo cách in từng phần tử một.

  • Chèn: Thêm một phần tử vào mảng tại chỉ mục đã cho.

  • Xóa: Xóa một phần tử từ mảng tại chỉ mục đã cho.

  • Tìm kiếm: Tìm kiếm một phần tử bởi sử dụng chỉ mục hay bởi giá trị.

  • Cập nhật: Cập nhật giá trị một phần tử tại chỉ mục nào đó.

Trong ngôn ngữ C, khi một mảng được khởi tạo với kích cỡ ban đầu, thì nó gán các giá trị mặc định cho các phần tử của mảng theo thứ tự sau:

Kiểu dữ liệuGiá trị mặc địnhboolfalsechar0int0float0.0double0.0fvoidwchar_t0

Hoạt động chèn phần tử vào mảng

Hoạt động chèn là để chèn một hoặc nhiều phần tử dữ liệu vào trong một mảng. Tùy theo yêu cầu, phần tử mới có thể được chèn vào vị trí đầu, vị trí cuối hoặc bất kỳ vị trí chỉ mục đã cho nào của mảng.

Phần tiếp theo chúng ta sẽ cùng triển khai hoạt động chèn trong một ví dụ thực. Trong ví dụ này, chúng ta sẽ chèn dữ liệu vào cuối mảng.

Ví dụ

Giả sử LA là một mảng tuyến tính có N phần tử và K là số nguyên dương thỏa mãn K <= N. Dưới đây là giải thuật để update giá trị phần tử tại vị trí K của mảng LA.

Lưu ý: vì số phần tử của mảng là 1 số cố định nên sau khi đã khai báo mảng ta không thể thêm 1 phần tử mới hay xóa phần tử hiện tại đi nhé.

Cách khai báo mảng một chiều

Dựa theo định nghĩa về mảng, để khai báo một mảng ta cần có:

  • Kiểu dữ liệu của mảng: ví dụ kiểu int, String, boolean, float, double,…
  • Số phần tử của mảng
  • Tên của mảng

Giả sử ta cần khai báo 1 mảng có kiểu dữ liệu số nguyên, gồm 5 phần tử, có tên là arr

Ở Java ta có 2 cách khai báo:

  • Cách 1:

int[] arr = {1,2,3,4,5}; // theo chuẩn thì người ta thường dùng cách kb này

hoặc int arr[] = {1, 2, 3, 4 ,5};

Cách này dùng khi ta đã biết mảng đó có chính xác 5 phần tử là: 1, 2, 3, 4, 5

Ví dụ khác: Mảng kiểu chuỗi: String arr = {“a”, “b”, “c”};

  • Cách 2:

int[] arr = new int[5];

Cách này dùng nếu ta không biết trước mảng số nguyên này gồm những số nào.

Ta có thể xem được số phần tử của mảng bằng cách: caodangytehadong.edu.vnth

Cách truy xuất/tham chiếu đến một phần tử của mảng một chiều

Những phần tử được sắp xếp trong mảng được đánh số theo số thứ tự (index).

Phần tử đầu tiên của mảng có index là 0

Related Articles

  • Mảng la gì
    Mảng la gì

    Những Cuốn Sách Marketing Hay Nhất mà Bạn Nên Đọc vào năm 2022

    Tháng Mười 29, 2022

  • Mảng la gì
    Mảng la gì

    ‘Bukkake’ là gì? Trong tiếng Nhật có nghĩa là gì?

    Tháng Mười 24, 2022

  • Mảng la gì

    Trang sức răng – Món đồ chơi xa xỉ của sao rap Việt

    Tháng Mười 22, 2022

  • Mảng la gì

    Vplace nổi bật trong lĩnh vực cho thuê hội trường

    Tháng Mười 22, 2022

  • Mảng la gì

    Kiosk là gì? Các loại Kiosk thường được sử dụng

    Tháng Mười 22, 2022

Phần tử cuối cùng của mảng có index là số phần tử mảng – 1

Với mảng số nguyên {1, 2, 3, 4, 5}, ta có:

Mảng la gì
Mảng la gì

arr[0] = 1;

arr[1] = 2;

arr[2] = 3;

arr[3] =4;

arr[4] =5;

Không có phần tử nào có index nhỏ hơn 0 hoặc lớn hơn 4 cả, nếu ta cố tình tham chiếu đến, chương trình sẽ báo lỗi ( ném ra ngoại lệ caodangytehadong.edu.vnyIndexOutOfBoundsException), lỗi này thường gặp khi chúng ta làm việc với kiểu mảng hay danh sách.

Tổng quát, để tham chiếu đến 1 phần tử thứ i của mảng:

arr[i] với 0 <= i <= caodangytehadong.edu.vn – 1 hoặc (0 <= i < caodangytehadong.edu.vn )

Liệt kê các phần tử của mảng một chiều bằng vòng lặp cơ bản

Bởi vì ta luôn biết số phần tử của mảng rồi nên thường dùng vòng lặp for có sử dụng index để liệt kê:

hoặc

( ở đây i đóng vai trò là index của mảng arr nên 0 <= i < số phần tử của mảng )

Có 1 cách khác sử dụng vòng for để liệt kê phần tử của mảng mà ko sử dụng index:

Đó là những gì về mảng một chiều mà mình muốn giới thiệu đến các bạn.

Đến đây bài viết cũng đã khá dài rồi, mình biết mấy bạn không thích dài nên thôi mình sẽ cố gắng viết ngắn gọn, đủ ý nhất có thể. Hẹn gặp lại các bạn ở phần sau: Kiểu Khai Báo Mảng ở Java – Mảng hai chiều và các mảng đa chiều khác