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ơ đồ trên minh họa rằng:
- Mảng là nơi chứa các phần tử.
- Các phần tử có giá trị và kiểu dữ liệu cụ thể, như “ABC”, TRUE hoặc FALSE, v.v.
- 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.
- 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.
- Định danh: chỉ định một tên như thường lệ, bạn làm cho các biến
- 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
- 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ử.
- 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)
- 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.
Ở đâ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.
Ở đâ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
