Mảng trong cấu trúc dữ liệu: Mảng là gì Operacác vấn đề [Ví dụ]

Mảng trong cấu trúc dữ liệu là gì?

An mảng là cấu trúc dữ liệu để lưu trữ nhiều mục dữ liệu có kiểu dữ liệu tương tự. Các mục của một mảng được phân bổ tại các vị trí bộ nhớ liền kề. Các vị trí bộ nhớ này được gọi các yếu tố của mảng đó. Tổng số phần tử trong mảng được gọi là chiều dài.

Các chi tiết của một mảng được truy cập về vị trí của nó. Tham chiếu này được gọi là chỉ số or chỉ số dưới.

Khái niệm về mảng

Sơ đồ khái niệm mảng
Sơ đồ khái niệm mảng

Sơ đồ trên minh họa rằng:

  1. Mảng là nơi chứa các phần tử.
  2. Các phần tử có giá trị và kiểu dữ liệu cụ thể, như “ABC”, TRUE hoặc FALSE, v.v.
  3. Mỗi phần tử cũng có chỉ mục riêng, được sử dụng để truy cập phần tử đó.

Lưu ý:

  • Các phần tử được lưu trữ tại các vị trí bộ nhớ liền kề.
  • Một chỉ mục luôn nhỏ hơn tổng số phần tử mảng.
  • Về mặt cú pháp, bất kỳ biến nào được khai báo dưới dạng mảng đều có thể lưu trữ nhiều giá trị.
  • Hầu hết tất cả các ngôn ngữ đều có cách hiểu giống nhau về mảng nhưng có cách khai báo và khởi tạo chúng khác nhau.
  • Tuy nhiên, ba phần sẽ luôn phổ biến trong tất cả các lần khởi tạo, tức là tên mảng, phần tử và kiểu dữ liệu của phần tử.

Sơ đồ sau đây minh họa cú pháp khai báo một mảng trong Python và C++ để trình bày rằng cách hiểu vẫn giống nhau mặc dù cú pháp có thể khác nhau một chút ở các ngôn ngữ khác nhau.

Hiểu cú pháp của mảng

Hiểu cú pháp của mảng
  • Tên mảng: cần thiết để dễ dàng tham khảo tập hợp các phần tử
  • Loại dữ liệu: cần thiết để kiểm tra kiểu và tính toàn vẹn dữ liệu
  • Các yếu tố: đây là những giá trị dữ liệu có trong một mảng

Tại sao chúng ta cần mảng?

Dưới đây là một số lý do nên sử dụng mảng trong cấu trúc dữ liệu:

  • Mảng là cách tốt nhất để lưu trữ nhiều giá trị trong một biến duy nhất
  • Mảng tốt hơn trong việc xử lý nhiều giá trị một cách dễ dàng và nhanh chóng
  • Sắp xếp và tìm kiếm các giá trị dễ dàng hơn trong mảng

Tạo một mảng trong Python

In Python, mảng khác với danh sách; danh sách có thể có các mục mảng thuộc kiểu dữ liệu, trong khi mảng chỉ có thể có các mục có cùng kiểu dữ liệu.

Python có một mô-đun riêng để xử lý các mảng được gọi là mảng, bạn cần nhập mô-đun này trước khi bắt đầu làm việc với chúng.

Lưu ý: Mảng phải chứa các số thực như số nguyên và số float, không cho phép chuỗi.

Đoạn mã sau minh họa cách bạn có thể tạo một mảng số nguyên trong Python để lưu trữ số dư tài khoản:

 import array
 balance = array.array('i', [300,200,100])
 print(balance)

Các cách khai báo một mảng trong Python

Bạn có thể khai báo một mảng trong Python trong khi khởi tạo nó bằng cú pháp sau.

arrayName = array.array(type code for data type, [array,items])

Hình ảnh sau đây giải thích cú pháp.

Cú pháp của mảng trong Python

Cú pháp của mảng trong Python

  1. Định danh: chỉ định một tên như thường lệ, bạn làm cho các biến
  2. Mô-đun: Python có một mô-đun đặc biệt để tạo mảng, được gọi là “mảng” - bạn phải nhập nó trước khi sử dụng
  3. Phương pháp: mô-đun mảng có một phương thức để khởi tạo mảng. Phải mất hai đối số, mã kiểu và các phần tử.
  4. Mã loại: chỉ định kiểu dữ liệu bằng cách sử dụng các mã kiểu có sẵn (xem danh sách bên dưới)
  5. Các yếu tố: chỉ định các phần tử mảng trong dấu ngoặc vuông, ví dụ [130,450,103]

Bảng sau minh họa các mã kiểu dữ liệu có sẵn cho các kiểu dữ liệu được hỗ trợ:

Nhập mã Loại C Python Kiểu Kích thước tối thiểu tính bằng byte
'C' xe tăng tính cách 1
'B' ký tự không dấu int 1
'b' ký char int 1
'u' Py_UNICODE Ký tự Unicode 2
'h' ký ngắn int 2
'H' không dấu ngắn int 2
'Tôi' int đã ký int 2
'TÔI' int không dấu Dài 2
'l' ký dài int 4
'L' không ký lâu Dài 4
'f' phao phao 4
'd' tăng gấp đôi phao 8

Làm cách nào để truy cập một giá trị mảng cụ thể?

Bạn có thể truy cập bất kỳ mục mảng nào bằng cách sử dụng chỉ mục của nó.

cú pháp

arrayName[indexNum]

Ví dụ:

balance[1]

Hình ảnh sau đây minh họa khái niệm cơ bản về cách truy cập các mục trong mảng theo chỉ mục của chúng.

Truy cập một phần tử mảng

Truy cập một phần tử mảng

Ở đây, chúng ta đã truy cập giá trị thứ hai của mảng bằng cách sử dụng chỉ mục của nó, là 1. Đầu ra của giá trị này sẽ là 200, về cơ bản là giá trị thứ hai của mảng cân bằng.

import array
balance = array.array('i', [300,200,100])
print(balance[1])

OUTPUT

200

Mảng Operations

Mô-đun mảng của Python có các hàm riêng biệt để thực hiện các hoạt động mảng. Đây là phương pháp phá hủy hoạt động với mảng, nghĩa là sửa đổi sẽ được lưu trong biến mảng.

Chèn

Với thao tác này, bạn có thể chèn một hoặc nhiều mục vào một mảng ở đầu, cuối hoặc bất kỳ chỉ mục nhất định nào của mảng. Phương pháp này mong đợi hai đối số chỉ số và giá trị.

cú pháp

arrayName.insert(index, value)

Ví dụ:

Hãy thêm một giá trị mới ngay sau mục thứ hai của mảng. Hiện tại, mảng cân bằng của chúng ta có ba mục 300, 200 và 100. Vậy chỉ số của mục mảng thứ hai có giá trị 200 là bao nhiêu nếu bạn nói 1.

Để chèn giá trị mới ngay “sau” chỉ mục 1, bạn cần tham chiếu chỉ mục 2 trong phương thức chèn của mình, như sau:

import array
balance = array.array('i', [300,200,100])
balance.insert(2, 150)

Bây giờ, để xác minh xem giá trị mới đã được chèn hay chưa, hãy nhập tên mảng và nhấn Enter trên bàn phím:

import array
balance = array.array('i', [300,200,100])
balance.insert(2, 150)
print(balance)

OUTPUT

array('i', [300,200,150,100])

Xóa bỏ

Với thao tác này, bạn có thể xóa một mục khỏi mảng theo giá trị. Phương thức này chỉ chấp nhận một đối số, giá trị. Sau khi chạy phương thức này, các mục trong mảng được sắp xếp lại và các chỉ mục được gán lại.

cú pháp

arrayName.remove(value)

Ví dụ:

Hãy xóa giá trị 150 khỏi mảng. Hiện tại, mảng số dư của chúng tôi có bốn mục 300, 200, 150 và 100. Vì vậy, để xóa 150 khỏi mảng, chúng tôi chỉ phải nhập 150 bên trong đối số phương thức. Đơn giản phải không?

import array
balance = array.array('i', [300,200,100])
balance.insert(2, 150)
print(balance)
balance.remove(150)

Bây giờ, để xác minh xem giá trị đã bị xóa hay chưa, hãy nhập tên mảng và nhấn Enter trên bàn phím:

import array
balance = array.array('i', [300,200,100])
balance.insert(2, 150)
print(balance)
balance.remove(150)
print(balance)

OUTPUT

 array('i', [300,200,100])

SEARCH

Với thao tác này, bạn có thể tìm kiếm một mục trong mảng dựa trên giá trị của nó. Phương thức này chỉ chấp nhận một đối số, giá trị. Đây là một phương pháp không phá hủy, có nghĩa là nó không ảnh hưởng đến các giá trị của mảng.

cú pháp

arrayName.index(value)

Ví dụ:

Hãy tìm kiếm giá trị 150 trong mảng. Hiện tại, mảng số dư của chúng tôi có bốn mục 300, 200, 150 và 100. Vì vậy, để tìm kiếm 150 trong mảng, chúng tôi chỉ phải nhập 150 bên trong đối số phương thức. Điều đó khá dễ dàng. Phương thức này trả về chỉ mục của giá trị được tìm kiếm.

import array
balance = array.array('i', [300,200,150,100])
print(balance.index(150))

OUTPUT

2

CẬP NHẬT

Thao tác này khá giống với phương thức chèn, ngoại trừ việc nó sẽ thay thế giá trị hiện có tại chỉ mục đã cho. Điều này có nghĩa là sẽ chỉ định một giá trị mới tại chỉ mục đã cho. Phương pháp này mong đợi hai đối số chỉ số và giá trị.

cú pháp

arrayName.udpate(index, value)

Ví dụ:

Giả sử mảng của chúng ta có bốn mục 300, 200, 150 và 100 và chúng ta muốn thay thế 150 bằng 145. Vậy chỉ số 150 là gì?

Kudos, nếu bạn nói 2.

Để thay thế 150 có chỉ số 2, bạn cần tham chiếu chỉ số 2 bằng cách sử dụng toán tử gán đơn giản, như sau:

import array
balance = array.array('i', [300,200,150,100])
balance[2] = 145

Bây giờ, để xác minh xem giá trị đã được cập nhật hay chưa, hãy nhập tên mảng và nhấn Enter trên bàn phím:

import array
balance = array.array('i', [300,200,150,100])
balance[2] = 145
print(balance)

OUTPUT

array('i', [300,200,145,100])

Đi qua

Bạn có thể duyệt một mảng python bằng cách sử dụng các vòng lặp, như thế này:

import array
balance = array.array('i', [300,200,100])
for x in balance:
	print(x)

OUTPUT

300
200
100

Tạo một mảng trong C++

C++ Ngôn ngữ linh hoạt hơn Python khi nói đến việc tạo mảng. Bạn có thể tạo C++ mảng theo ba cách được đề cập ở trên.

Đoạn mã sau minh họa cách bạn có thể tạo một mảng số nguyên trong C++ để lưu trữ số dư tài khoản:

#include <iostream>
using namespace std;

int main()
{
  int balance[3] = { 300, 200, 100 };
  for (int i = 0; i < 3; i++)
    {
      cout << "value of i: " << balance[i] << endl;
    }
  return 0;
}

Các cách khai báo một mảng trong C++

Bạn có thể khai báo một mảng theo ba biến thể cú pháp. Cái nào phù hợp với chương trình của bạn; sự lựa chọn này dựa trên yêu cầu chương trình của bạn.

Tuyên bố theo kích thước

cú pháp

dataType arrayName[arraySize];

Ví dụ:

int balance[3];

Chỉ các mục mảng khởi tạo khai báo

cú pháp

dataType arrayName[] = {array, items};

Ví dụ:

int balance[] = { 300, 200, 100 };

Khai báo theo kích thước và khởi tạo các mục mảng

cú pháp

dataType arrayName[arraySize] = {array, items};

Ví dụ:

int balance[3] = { 300, 200, 100 };

Làm cách nào để truy cập một giá trị mảng cụ thể?

Bạn có thể truy cập bất kỳ mục mảng nào bằng cách sử dụng chỉ mục của nó.

cú pháp

arrayName[indexNum]

Ví dụ:

balance[1]

Hình ảnh sau đây minh họa khái niệm cơ bản về cách truy cập các mục trong mảng theo chỉ mục của chúng.

Truy cập một phần tử mảng

Truy cập một phần tử mảng

Ở đây, chúng ta đã truy cập giá trị thứ hai của mảng bằng cách sử dụng chỉ mục của nó, là 1. Đầu ra của giá trị này sẽ là 200, về cơ bản là giá trị thứ hai của mảng cân bằng.

#include <iostream>
using namespace std;

int main()
{
  int balance[3] = { 300, 200, 100 };
  cout << balance[1];

  return 0;
}

Đầu ra

200

Mảng Operacác vấn đề trong C++

Không giống như Python, Trong C++ bạn phải tự lập trình logic để thực hiện các thao tác chèn, xóa, tìm kiếm, cập nhật và duyệt trên C++ mảng.

Chèn

Logic cho thao tác chèn diễn ra như sau:

  • lặp qua các mục mảng
  • chuyển chúng sang một chỉ số lớn hơn
  • thêm một mục mảng mới tại một chỉ mục nhất định

Trong ví dụ sau, chúng ta có 5 mục trong mảng cân bằng và chúng ta muốn thêm một mục mới ngay sau giá trị 200. Điều này có nghĩa là chúng ta phải dịch chuyển tất cả các mục sau 200 sang chỉ mục lớn hơn, sau đó chèn giá trị mới là 150.

#include <iostream>
#include <stdio.h>

main() {
   int pos = 2;
   int size = 4;
   int balance[] = {300,200,100,50,0};
   
   printf("BEFORE INCREMENT: \n");
   for(int i = 0; i<5; i++) {
      printf("%d\n",balance[i]);
   }

   /* FOR SHIFTING ITEMS TO A GREATER INDEX */
   for(int i = size; i >= pos; i--) {
       balance[i+1]=balance[i];
   }

   /* FOR INSERTING VALUE AT OUR DESIRED INDEX */   
   balance[pos] = 150;
   
   printf("AFTER INCREMENT: \n");
   

   /* FOR PRINTING THE NEW ARRAY */   
   for(int i = 0; i<6; i++) {
      printf("%d\n",balance[i]);
   }
}

Đầu ra

BEFORE INCREMENT
300
200
100
50
0
AFTERINCREMENT
300
200
150
100
50
0

Mảng Operacác vấn đề trong Java

Hãy tạo một chương trình trong Java, trong này chương trình mảng trong Java chúng tôi sẽ chấp nhận kích thước và giá trị của các phần tử mảng từ người dùng.

import java.util.Scanner;

public class AddElements {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);

        System.out.println("Enter the size of the array");
        int n=sc.nextInt();

        int arr[]=new int[n];

        System.out.println("Enter Elements in the array");
        for(int i=0;i<n;i++)
        {
            arr[i]=sc.nextInt();
        }
        System.out.println("Elements in the array");
        for(int j=0;j<n;j++)
        {
            System.out.print(arr[j]+" ");
        }
    }
}

Đầu ra: -

Enter the size of the array

5
Enter Elements in the array

1
2
3
4
5
Elements in the array
1 2 3 4 5 

Sửa đổi phần tử trong mảng: -

Cập nhật một phần tử theo chỉ mục đã cho.

Chương trình trong Java để biết cách Sửa đổi các phần tử trong một mảng

import java.util.Scanner;

public class ModifyElement {
    public static void main(String[] args) {
        int arr[]={1,2,3,4,5};
        int length= arr.length;
        Scanner sc=new Scanner(System.in);

        System.out.println("Array Elements Before modify");
        for(int i=0;i<length;i++)
        {
            System.out.print(arr[i]+" ");
        }


        System.out.println("\nEnter the position where you want to change in an array");
        int pos=sc.nextInt();

        System.out.println("Enter the value");
        int val=sc.nextInt();

        arr[pos]=val;

        System.out.println("Array Elements After modify");
        for(int j=0;j<length;j++)
        {
            System.out.print(arr[j]+" ");
        }
    }
}

Đầu ra: -

Array Elements Before modify
1 2 3 4 5 
Enter the position where you want to change in an array

2
Enter the value
8
Array Elements After modify
1 2 8 4 5 

Phần tử truy cập trong mảng: -

In tất cả các phần tử mảng.

Chương trình trong Java để biết cách duyệt trong mảng

public class AccessElements {
    public static void main(String[] args) {
        int arr[]={1,2,3,4,5};
        int length= arr.length;

        System.out.println("Array Elements are:-");
        for(int i=0;i<length;i++)
        {
            System.out.print(arr[i]+" ");
        }

    }
}

Đầu ra: -

Array Elements are:-
1 2 3 4 5 

Tổng kết

  • Mảng là một cấu trúc dữ liệu để lưu trữ nhiều mục dữ liệu có kiểu dữ liệu giống nhau
  • Mã định danh, kiểu dữ liệu, độ dài mảng, phần tử và chỉ mục là những phần chính của mảng
  • Sử dụng chỉ mục để xử lý giá trị của các phần tử mảng
  • Mảng có sự hỗ trợ tuyệt vời để giữ nguyên kiểu dữ liệu
  • Trong hầu hết các ngôn ngữ, một mảng được tạo bằng cách chỉ định mã định danh, kiểu dữ liệu và các phần tử cần bao gồm
  • Mảng là tốt nhất để xử lý một số lượng lớn các giá trị và để sắp xếp và tìm kiếm nhanh chóng
  • Python có các mô-đun và phương thức tích hợp để thực hiện các hoạt động mảng cơ bản như chèn, xóa, tìm kiếm, cập nhật và duyệt
  • C++ cần xác định các chương trình cho các hoạt động mảng cơ bản như chèn, xóa, tìm kiếm, cập nhật và duyệt

Tóm tắt bài viết này với: