Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

โปรแกรม C เพื่อดำเนินการสองส่วนในอาร์เรย์เดียว


ปัญหา

เขียนโปรแกรมรับอาร์เรย์หนึ่งมิติของ N องค์ประกอบและแบ่งออกเป็นสองส่วน ต่อมา ให้เรียงลำดับครึ่งแรกจากน้อยไปมาก และครึ่งหลังตามลำดับจากมากไปหาน้อย

วิธีแก้ปัญหา

วิธีแก้ปัญหาสำหรับการดำเนินการทั้งสองแบบในสองส่วนในอาร์เรย์เดียวในภาษา C ได้อธิบายไว้ด้านล่าง -

ตรรกะที่ใช้ เรียงลำดับครึ่งแรกจากน้อยไปหามากมีดังนี้

for (i=0; i<b; ++i){
   for (j=i+1; j<b; ++j){
      if (number[i] > number[j]){
         a = number[i];
         number[i] = number[j];
         number[j] = a;
      }
   }
}

ตรรกะที่ใช้ จัดเรียงครึ่งหลังตามลำดับจากมากไปน้อย เป็นดังนี้ −

for (i=b; i<n; ++i){
   for (j=i+1; j<n; ++j){
      if (number[i] < number[j]){
         a = number[i];
         number[i] = number[j];
         number[j] = a;
      }
   }
}

ตรรกะที่ใช้ในการแบ่งอาเรย์ออกเป็นสองส่วนและพิมพ์ตามลำดับด้านล่าง -

  • อันดับจากน้อยไปมากในครึ่งแรก
for (i=0; i<b; ++i)
printf ("%d ",number[i]);
  • ลำดับจากมากไปน้อยในครึ่งหลัง
for(i=b;i<n;i++)
printf("%d ",number[i]);

ตัวอย่าง

ต่อไปนี้เป็นโปรแกรม C เพื่อ ดำเนินการสองครั้งในสองส่วนในอาร์เรย์เดียว

#include<stdio.h>
void main(){
   int i,j,a,n,b,number[30];
   printf ("Enter the value of N\n");
   scanf ("%d", &n);
   b = n/2;
   printf ("Enter the numbers \n");
   for (i=0; i<n; ++i)
      scanf ("%d",&number[i]);
      for (i=0; i<b; ++i){
         for (j=i+1; j<b; ++j){
            if (number[i] > number[j]){
               a = number[i];
               number[i] = number[j];
               number[j] = a;
         }
      }
   }
   for (i=b; i<n; ++i){
      for (j=i+1; j<n; ++j){
         if (number[i] < number[j]){
            a = number[i];
            number[i] = number[j];
            number[j] = a;
         }
      }
   }
   printf (" The 1st half numbers\n");
   printf (" arranged in asc\n");
   for (i=0; i<b; ++i)
      printf ("%d ",number[i]);
   printf("\nThe 2nd half Numbers\n");
   printf("order arranged in desc.order\n");
   for(i=b;i<n;i++)
      printf("%d ",number[i]);
}

ผลลัพธ์

เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −

Enter the value of N

10
Enter the numbers
20
34
23
11
45
56
78
98
76
54
The 1st half numbers
arranged in asc
11 20 23 34 45
The 2nd half Numbers
order arranged in desc.order
98 78 76 56 54