โครงสร้างข้อมูลและอัลกอริทึม - อาร์เรย์

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