อาร์เรย์ในโครงสร้างข้อมูล (Operations)
⚡ สรุปอย่างชาญฉลาด
อาร์เรย์ในโครงสร้างข้อมูลใช้สำหรับจัดเก็บข้อมูลประเภทเดียวกันหลายรายการในตำแหน่งหน่วยความจำที่ต่อเนื่องกัน โดยแต่ละรายการสามารถเข้าถึงได้ด้วยดัชนี บทช่วยสอนนี้จะอธิบายแนวคิด ความสำคัญของอาร์เรย์ และวิธีการสร้างและใช้งานอาร์เรย์ Python, C++และ Java พร้อมตัวอย่าง

Array ในโครงสร้างข้อมูลคืออะไร?
An แถว อาร์เรย์เป็นโครงสร้างข้อมูลสำหรับจัดเก็บข้อมูลมากกว่าหนึ่งรายการที่มีชนิดข้อมูลคล้ายกัน รายการในอาร์เรย์จะถูกจัดสรรในตำแหน่งหน่วยความจำที่อยู่ติดกัน และตำแหน่งเหล่านี้เรียกว่า ช่องข้อมูล องค์ประกอบ ของอาร์เรย์ จำนวนองค์ประกอบทั้งหมดในอาร์เรย์คือขนาดของมัน ความยาว.
แต่ละองค์ประกอบสามารถเข้าถึงได้โดยใช้ตำแหน่งของมัน และการอ้างอิงนี้เรียกว่า ตัวอ้างอิง ดัชนี or ตัวห้อย.
แนวคิดของอาร์เรย์
แผนภาพแนวคิดของอาร์เรย์
แผนภาพด้านบนแสดงให้เห็นว่า:
- อาร์เรย์เป็นที่เก็บขององค์ประกอบ
- องค์ประกอบแต่ละตัวมีค่าและชนิดข้อมูลเฉพาะ เช่น “ABC”, TRUE หรือ FALSE
- แต่ละองค์ประกอบจะมีดัชนีของตัวเอง ซึ่งใช้ในการเข้าถึงองค์ประกอบนั้น
หมายเหตุ
- องค์ประกอบจะถูกจัดเก็บไว้ในตำแหน่งหน่วยความจำที่อยู่ติดกัน
- ดัชนีจะน้อยกว่าจำนวนรายการอาร์เรย์ทั้งหมดเสมอ
- ตัวแปรใดๆ ที่ประกาศเป็นอาร์เรย์สามารถเก็บค่าได้หลายค่า
- ภาษาโปรแกรมเกือบทุกภาษามีแนวคิดเรื่องอาร์เรย์เหมือนกัน แต่แตกต่างกันในวิธีการประกาศและกำหนดค่าเริ่มต้นให้กับอาร์เรย์เหล่านั้น
- ส่วนประกอบสามส่วนที่เหมือนกันในทุกการกำหนดค่าเริ่มต้น ได้แก่ ชื่อของอาร์เรย์ องค์ประกอบของอาร์เรย์ และชนิดข้อมูลขององค์ประกอบเหล่านั้น
แผนภาพต่อไปนี้แสดงไวยากรณ์สำหรับการประกาศตัวแปร อาร์เรย์ใน Python และ C++ซึ่งแสดงให้เห็นว่าแนวคิดยังคงเหมือนเดิม แม้ว่าไวยากรณ์จะแตกต่างกันเล็กน้อยในแต่ละภาษา
ทำความเข้าใจไวยากรณ์ของอาร์เรย์
- ชื่ออาร์เรย์: จำเป็นสำหรับการอ้างอิงชุดองค์ประกอบได้อย่างง่ายดาย
- ประเภทข้อมูล: จำเป็นสำหรับการตรวจสอบประเภทและความสมบูรณ์ของข้อมูล
- องค์ประกอบ: ค่าข้อมูลที่มีอยู่ในอาร์เรย์
ทำไมเราจึงต้องการอาร์เรย์?
- อาร์เรย์เหมาะอย่างยิ่งสำหรับการจัดเก็บค่าหลายค่าในตัวแปรเดียว
- พวกเขาสามารถประมวลผลค่าต่างๆ ได้อย่างง่ายดายและรวดเร็ว
- การเรียงลำดับและการค้นหาค่าต่างๆ ทำได้ง่ายกว่าเมื่อใช้อาร์เรย์
การสร้างอาร์เรย์ใน Python
In Pythonอาร์เรย์แตกต่างจากลิสต์ตรงที่ ลิสต์สามารถเก็บรายการที่มีชนิดข้อมูลต่างกันได้ ในขณะที่อาร์เรย์สามารถเก็บรายการที่มีชนิดข้อมูลเดียวกันเท่านั้น Python มีโมดูลแยกต่างหากสำหรับจัดการอาร์เรย์ เรียกว่า arrayซึ่งคุณต้องนำเข้าก่อนจึงจะใช้งานได้
หมายเหตุ อาร์เรย์ต้องประกอบด้วยตัวเลขจริง เช่น จำนวนเต็มและจำนวนทศนิยม ไม่อนุญาตให้ใช้สตริง
โค้ดต่อไปนี้สร้างอาร์เรย์จำนวนเต็มใน Python เพื่อบันทึกยอดคงเหลือในบัญชี:
import array
balance = array.array('i', [300, 200, 100])
print(balance)
วิธีการประกาศอาร์เรย์ใน Python
คุณสามารถประกาศอาร์เรย์ใน Python ขณะทำการเริ่มต้นใช้งานโดยใช้ไวยากรณ์ดังต่อไปนี้:
arrayName = array.array(typecode, [array_items])
ไวยากรณ์ของอาร์เรย์ใน Python
- ตัวระบุ: ระบุชื่อเช่นเดียวกับที่คุณทำกับตัวแปรทั่วไป
- โมดูล: Python มีโมดูลพิเศษที่เรียกว่า "array" ซึ่งคุณต้องนำเข้าก่อน
- วิธีการ: โมดูล array มีเมธอดสำหรับเริ่มต้นค่า array โดยรับอาร์กิวเมนต์สองตัว คือ typecode และ elements
- รหัสประเภท: ระบุชนิดข้อมูลโดยใช้รหัสชนิดข้อมูลที่มีอยู่ (ดูตารางด้านล่าง)
- องค์ประกอบ: ระบุองค์ประกอบของอาร์เรย์ภายในวงเล็บเหลี่ยม เช่น [130, 450, 103]
ตารางด้านล่างแสดงรายการรหัสประเภท (typecodes) ที่มีให้สำหรับประเภทข้อมูลที่รองรับ
| พิมพ์รหัส | Type C | Python ประเภท | ขนาดขั้นต่ำ (ไบต์) |
|---|---|---|---|
| 'b' | ถ่านที่ลงนาม | int | 1 |
| 'B' | ถ่านที่ไม่ได้ลงนาม | int | 1 |
| 'ยู' | Py_UNICODE | อักขระ Unicode | 2 |
| 'ชม' | ลงนามสั้น ๆ | int | 2 |
| 'H' | สั้นไม่ได้ลงนาม | int | 2 |
| 'ผม' | ลงนามใน | int | 2 |
| 'ผม' | int ที่ไม่ได้ลงนาม | int | 2 |
| ฉัน | เซ็นนาน | int | 4 |
| 'L' | ไม่ได้ลงนามยาว | int | 4 |
| 'F' | ลอย | ลอย | 4 |
| 'd' | สอง | ลอย | 8 |
วิธีเข้าถึงค่าเฉพาะในอาร์เรย์?
คุณสามารถเข้าถึงรายการใดๆ ในอาร์เรย์ได้โดยใช้ดัชนีของรายการนั้น
ไวยากรณ์:
arrayName[indexNum]
ตัวอย่าง:
balance[1]
เข้าถึงองค์ประกอบอาร์เรย์
ในที่นี้ เราเข้าถึงค่าที่สองของอาร์เรย์โดยใช้ดัชนี 1 ผลลัพธ์ที่ได้คือ 200 ซึ่งเป็นค่าที่สองของอาร์เรย์ยอดคงเหลือ
import array
balance = array.array('i', [300, 200, 100])
print(balance[1])
Output:
200
แถว Operaต่างๆใน Python
การขอ Python โมดูล array มีฟังก์ชันแยกต่างหากสำหรับการดำเนินการกับอาร์เรย์ วิธีการเหล่านี้เป็นแบบทำลายข้อมูล หมายความว่าการเปลี่ยนแปลงจะถูกบันทึกไว้ในตัวแปรอาร์เรย์
สิ่งที่ใส่เข้าไป
คำสั่งนี้จะแทรกรายการหนึ่งรายการหรือมากกว่านั้นลงในอาร์เรย์ที่ต้น ที่ท้าย หรือที่ดัชนีใดๆ ก็ได้ โดยต้องการอาร์กิวเมนต์สองตัวคือ ดัชนีและค่า
arrayName.insert(index, value)
ตัวอย่าง: หากต้องการแทรกค่าใหม่ต่อจากดัชนี 1 (ค่า 200) ให้ใช้ดัชนี 2 ในเมธอดการแทรก
import array
balance = array.array('i', [300, 200, 100])
balance.insert(2, 150)
print(balance)
Output:
array('i', [300, 200, 150, 100])
ลบ
การดำเนินการนี้จะลบรายการหนึ่งรายการออกจากอาร์เรย์โดยใช้ค่า โดยรับอาร์กิวเมนต์เพียงตัวเดียว หลังจากดำเนินการเสร็จสิ้น รายการต่างๆ จะถูกจัดเรียงใหม่และดัชนีจะถูกกำหนดใหม่
arrayName.remove(value)
ตัวอย่าง:
import array
balance = array.array('i', [300, 200, 150, 100])
balance.remove(150)
print(balance)
Output:
array('i', [300, 200, 100])
ค้นหา
การดำเนินการนี้จะค้นหารายการตามค่าและส่งคืนค่าดัชนี เป็นวิธีการที่ไม่ทำลายข้อมูลในอาร์เรย์ ดังนั้นจึงไม่เปลี่ยนแปลงค่าในอาร์เรย์
arrayName.index(value)
ตัวอย่าง:
import array
balance = array.array('i', [300, 200, 150, 100])
print(balance.index(150))
Output:
2
บันทึก
การอัปเดตจะแทนที่ค่าที่มีอยู่ ณ ดัชนีที่กำหนดโดยใช้ตัวดำเนินการกำหนดค่าแบบง่าย (Python อาร์เรย์ไม่มี update() วิธี.)
arrayName[index] = value
ตัวอย่าง: เพื่อแทนที่ 150 (ที่ดัชนี 2) ด้วย 145:
import array
balance = array.array('i', [300, 200, 150, 100])
balance[2] = 145
print(balance)
Output:
array('i', [300, 200, 145, 100])
ทราเวิร์
คุณสามารถข้ามผ่าน Python อาร์เรย์โดยใช้ลูป:
import array
balance = array.array('i', [300, 200, 100])
for x in balance:
print(x)
Output:
300
200
100
การสร้างอาร์เรย์ใน C++
C++ มีความยืดหยุ่นมากกว่า Python เมื่อสร้างอาร์เรย์ คุณสามารถสร้างได้ C++ อาร์เรย์ ในสามวิธี โค้ดต่อไปนี้สร้างอาร์เรย์จำนวนเต็มใน C++ เพื่อบันทึกยอดคงเหลือในบัญชี:
#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++
คุณสามารถประกาศอาร์เรย์ได้สามวิธี ขึ้นอยู่กับความต้องการของโปรแกรมของคุณ
การระบุขนาด:
dataType arrayName[arraySize]; // e.g. int balance[3];
การประกาศโดยใช้เฉพาะรายการในอาร์เรย์:
dataType arrayName[] = {array_items}; // e.g. int balance[] = { 300, 200, 100 };
การประกาศแยกตามขนาดและจำนวนชิ้น:
dataType arrayName[arraySize] = {array_items}; // e.g. int balance[3] = { 300, 200, 100 };
วิธีเข้าถึงค่าเฉพาะในอาร์เรย์ใน C++?
การเข้าถึงองค์ประกอบอาร์เรย์
#include <iostream>
using namespace std;
int main()
{
int balance[3] = { 300, 200, 100 };
cout << balance[1];
return 0;
}
Output:
200
แถว Operaต่างๆใน C++
แตกต่าง Pythonใน C++ คุณต้องเขียนโปรแกรมตรรกะด้วยตนเองสำหรับการดำเนินการแทรก ลบ ค้นหา อัปเดต และสำรวจข้อมูล
สิ่งที่ใส่เข้าไป
หลักการแทรกข้อมูลคือ: วนลูปผ่านรายการในอาร์เรย์ เลื่อนรายการเหล่านั้นไปยังดัชนีที่มากกว่า จากนั้นเพิ่มรายการใหม่ที่ดัชนีที่กำหนด ตัวอย่างด้านล่างมีห้ารายการและแทรก 150 ต่อจากค่า 200 ทันที
#include <iostream>
#include <stdio.h>
main() {
int pos = 2;
int size = 4;
int balance[] = {300, 200, 100, 50, 0};
printf("BEFORE INSERT:\n");
for(int i = 0; i < 5; i++) {
printf("%d\n", balance[i]);
}
/* SHIFT ITEMS TO A GREATER INDEX */
for(int i = size; i >= pos; i--) {
balance[i+1] = balance[i];
}
/* INSERT VALUE AT THE DESIRED INDEX */
balance[pos] = 150;
printf("AFTER INSERT:\n");
for(int i = 0; i < 6; i++) {
printf("%d\n", balance[i]);
}
}
แถว Operaต่างๆใน Java
เรามาสร้างโปรแกรมใน Java ซึ่งรับขนาดและค่าขององค์ประกอบในอาร์เรย์จากผู้ใช้
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] + " ");
}
}
}
แก้ไของค์ประกอบใน Java แถว
อัปเดตองค์ประกอบโดยใช้ดัชนีของมัน
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 to change");
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] + " ");
}
}
}
การเข้าถึงองค์ประกอบใน Java แถว
พิมพ์ค่าทุกค่าในอาร์เรย์โดยการวนลูปผ่านอาร์เรย์
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] + " ");
}
}
}





