โครงสร้างข้อมูลและอัลกอริทึม - อาร์เรย์
Array คือคอนเทนเนอร์ที่สามารถรองรับจำนวนรายการที่กำหนดและรายการเหล่านี้ควรเป็นประเภทเดียวกัน โครงสร้างข้อมูลส่วนใหญ่ใช้ประโยชน์จากอาร์เรย์เพื่อใช้อัลกอริทึมของตน ต่อไปนี้เป็นเงื่อนไขสำคัญในการทำความเข้าใจแนวคิดของ Array
Element - แต่ละรายการที่จัดเก็บในอาร์เรย์เรียกว่าองค์ประกอบ
Index - แต่ละตำแหน่งขององค์ประกอบในอาร์เรย์มีดัชนีตัวเลขซึ่งใช้ในการระบุองค์ประกอบ
การเป็นตัวแทนอาร์เรย์
อาร์เรย์สามารถประกาศได้หลายวิธีในภาษาต่างๆ สำหรับภาพประกอบลองใช้การประกาศอาร์เรย์ C
อาร์เรย์สามารถประกาศได้หลายวิธีในภาษาต่างๆ สำหรับภาพประกอบลองใช้การประกาศอาร์เรย์ C
ตามภาพประกอบด้านบนประเด็นสำคัญที่ต้องพิจารณาต่อไปนี้
ดัชนีเริ่มต้นด้วย 0
ความยาวอาร์เรย์คือ 10 ซึ่งหมายความว่าสามารถจัดเก็บองค์ประกอบได้ 10 รายการ
แต่ละองค์ประกอบสามารถเข้าถึงได้ผ่านทางดัชนี ตัวอย่างเช่นเราสามารถดึงองค์ประกอบที่ดัชนี 6 เป็น 9
การทำงานขั้นพื้นฐาน
ต่อไปนี้เป็นการดำเนินการพื้นฐานที่อาร์เรย์รองรับ
Traverse - พิมพ์องค์ประกอบอาร์เรย์ทั้งหมดทีละรายการ
Insertion - เพิ่มองค์ประกอบในดัชนีที่กำหนด
Deletion - ลบองค์ประกอบในดัชนีที่กำหนด
Search - ค้นหาองค์ประกอบโดยใช้ดัชนีที่กำหนดหรือตามค่า
Update - อัปเดตองค์ประกอบที่ดัชนีที่กำหนด
ใน C เมื่ออาร์เรย์เริ่มต้นด้วยขนาดจะกำหนดค่าเริ่มต้นให้กับองค์ประกอบตามลำดับต่อไปนี้
ประเภทข้อมูล | ค่าเริ่มต้น |
---|---|
บูล | เท็จ |
ถ่าน | 0 |
int | 0 |
ลอย | 0.0 |
สองเท่า | 0.0f |
เป็นโมฆะ | |
wchar_t | 0 |
การทำงานแบบ Traverse
การดำเนินการนี้คือการสำรวจผ่านองค์ประกอบของอาร์เรย์
ตัวอย่าง
ต่อไปนี้โปรแกรมข้ามผ่านและพิมพ์องค์ประกอบของอาร์เรย์:
#include <stdio.h>
main() {
int LA[] = {1,3,5,7,8};
int item = 10, k = 3, n = 5;
int i = 0, j = n;
printf("The original array elements are :\n");
for(i = 0; i<n; i++) {
printf("LA[%d] = %d \n", i, LA[i]);
}
}
เมื่อเราคอมไพล์และรันโปรแกรมข้างต้นจะให้ผลลัพธ์ดังต่อไปนี้ -
เอาต์พุต
The original array elements are :
LA[0] = 1
LA[1] = 3
LA[2] = 5
LA[3] = 7
LA[4] = 8
การดำเนินการแทรก
การดำเนินการแทรกคือการแทรกองค์ประกอบข้อมูลอย่างน้อยหนึ่งองค์ประกอบลงในอาร์เรย์ ตามข้อกำหนดคุณสามารถเพิ่มองค์ประกอบใหม่ที่จุดเริ่มต้นจุดสิ้นสุดหรือดัชนีที่กำหนดของอาร์เรย์
ที่นี่เราจะเห็นการดำเนินการแทรกในทางปฏิบัติซึ่งเราเพิ่มข้อมูลที่ส่วนท้ายของอาร์เรย์ -
ตัวอย่าง
ต่อไปนี้คือการใช้อัลกอริทึมข้างต้น -
#include <stdio.h>
main() {
int LA[] = {1,3,5,7,8};
int item = 10, k = 3, n = 5;
int i = 0, j = n;
printf("The original array elements are :\n");
for(i = 0; i<n; i++) {
printf("LA[%d] = %d \n", i, LA[i]);
}
n = n + 1;
while( j >= k) {
LA[j+1] = LA[j];
j = j - 1;
}
LA[k] = item;
printf("The array elements after insertion :\n");
for(i = 0; i<n; i++) {
printf("LA[%d] = %d \n", i, LA[i]);
}
}
เมื่อเราคอมไพล์และรันโปรแกรมข้างต้นจะให้ผลลัพธ์ดังต่อไปนี้ -
เอาต์พุต
The original array elements are :
LA[0] = 1
LA[1] = 3
LA[2] = 5
LA[3] = 7
LA[4] = 8
The array elements after insertion :
LA[0] = 1
LA[1] = 3
LA[2] = 5
LA[3] = 10
LA[4] = 7
LA[5] = 8
สำหรับรูปแบบอื่น ๆ ของการดำเนินการแทรกอาร์เรย์คลิกที่นี่
การดำเนินการลบ
การลบหมายถึงการลบองค์ประกอบที่มีอยู่ออกจากอาร์เรย์และจัดระเบียบองค์ประกอบทั้งหมดของอาร์เรย์ใหม่
อัลกอริทึม
พิจารณา LA เป็นอาร์เรย์เชิงเส้นที่มี N องค์ประกอบและ K เป็นจำนวนเต็มบวกเช่นนั้น K<=N. ต่อไปนี้เป็นขั้นตอนวิธีในการลบองค์ประกอบที่มีอยู่ที่ตำแหน่ง K thของ LA
1. Start
2. Set J = K
3. Repeat steps 4 and 5 while J < N
4. Set LA[J] = LA[J + 1]
5. Set J = J+1
6. Set N = N-1
7. Stop
ตัวอย่าง
ต่อไปนี้คือการใช้อัลกอริทึมข้างต้น -
#include <stdio.h>
void main() {
int LA[] = {1,3,5,7,8};
int k = 3, n = 5;
int i, j;
printf("The original array elements are :\n");
for(i = 0; i<n; i++) {
printf("LA[%d] = %d \n", i, LA[i]);
}
j = k;
while( j < n) {
LA[j-1] = LA[j];
j = j + 1;
}
n = n -1;
printf("The array elements after deletion :\n");
for(i = 0; i<n; i++) {
printf("LA[%d] = %d \n", i, LA[i]);
}
}
เมื่อเราคอมไพล์และรันโปรแกรมข้างต้นจะให้ผลลัพธ์ดังต่อไปนี้ -
เอาต์พุต
The original array elements are :
LA[0] = 1
LA[1] = 3
LA[2] = 5
LA[3] = 7
LA[4] = 8
The array elements after deletion :
LA[0] = 1
LA[1] = 3
LA[2] = 7
LA[3] = 8
การดำเนินการค้นหา
คุณสามารถทำการค้นหาองค์ประกอบอาร์เรย์ตามค่าหรือดัชนีของมัน
อัลกอริทึม
พิจารณา LA เป็นอาร์เรย์เชิงเส้นที่มี N องค์ประกอบและ K เป็นจำนวนเต็มบวกเช่นนั้น K<=N. ต่อไปนี้เป็นอัลกอริทึมในการค้นหาองค์ประกอบที่มีค่า ITEM โดยใช้การค้นหาตามลำดับ
1. Start
2. Set J = 0
3. Repeat steps 4 and 5 while J < N
4. IF LA[J] is equal ITEM THEN GOTO STEP 6
5. Set J = J +1
6. PRINT J, ITEM
7. Stop
ตัวอย่าง
ต่อไปนี้คือการใช้อัลกอริทึมข้างต้น -
#include <stdio.h>
void main() {
int LA[] = {1,3,5,7,8};
int item = 5, n = 5;
int i = 0, j = 0;
printf("The original array elements are :\n");
for(i = 0; i<n; i++) {
printf("LA[%d] = %d \n", i, LA[i]);
}
while( j < n){
if( LA[j] == item ) {
break;
}
j = j + 1;
}
printf("Found element %d at position %d\n", item, j+1);
}
เมื่อเราคอมไพล์และรันโปรแกรมข้างต้นจะให้ผลลัพธ์ดังต่อไปนี้ -
เอาต์พุต
The original array elements are :
LA[0] = 1
LA[1] = 3
LA[2] = 5
LA[3] = 7
LA[4] = 8
Found element 5 at position 3
อัปเดตการทำงาน
การดำเนินการอัปเดตหมายถึงการอัปเดตองค์ประกอบที่มีอยู่จากอาร์เรย์ที่ดัชนีที่กำหนด
อัลกอริทึม
พิจารณา LA เป็นอาร์เรย์เชิงเส้นที่มี N องค์ประกอบและ K เป็นจำนวนเต็มบวกเช่นนั้น K<=N. ต่อไปนี้เป็นอัลกอริทึมในการอัปเดตองค์ประกอบที่มีอยู่ที่ตำแหน่ง K thของ LA
1. Start
2. Set LA[K-1] = ITEM
3. Stop
ตัวอย่าง
ต่อไปนี้คือการใช้อัลกอริทึมข้างต้น -
#include <stdio.h>
void main() {
int LA[] = {1,3,5,7,8};
int k = 3, n = 5, item = 10;
int i, j;
printf("The original array elements are :\n");
for(i = 0; i<n; i++) {
printf("LA[%d] = %d \n", i, LA[i]);
}
LA[k-1] = item;
printf("The array elements after updation :\n");
for(i = 0; i<n; i++) {
printf("LA[%d] = %d \n", i, LA[i]);
}
}
เมื่อเราคอมไพล์และรันโปรแกรมข้างต้นจะให้ผลลัพธ์ดังต่อไปนี้ -
เอาต์พุต
The original array elements are :
LA[0] = 1
LA[1] = 3
LA[2] = 5
LA[3] = 7
LA[4] = 8
The array elements after updation :
LA[0] = 1
LA[1] = 3
LA[2] = 10
LA[3] = 7
LA[4] = 8