Computer >> Máy Tính >  >> Lập trình >> lập trình C

In các phần tử không phổ biến từ hai mảng đã sắp xếp

Với hai mảng được sắp xếp và đầu ra sẽ hiển thị các phần tử không phổ biến của chúng

Given : array1[]= {1, 4, 6, 9, 12}
   array2[]= {2, 4, 7, 8, 9, 10}
Output : 1 2 6 7 8 10 12

Thuật toán

START
Step 1 -> declare two arrays array1 and array2 with elements as int and variables n1, n2, i to 0 and j to 0
Step 2 -> calculate number of elements in array1 sizeof(array1)/sizeof(array1[0])
Step 3-> calculate number of elements in array2 sizeof(array2)/sizeof(array2[0])
Step 4 -> Loop While till i<n1 and j<n2
   IF array1[i]<array2[j]
      Print array1[i++]
   End IF
      ELSE If array1[i] > array2[j]
         Print array2[j++ ]
      End ELSE IF
   ELSE
      i++ and j++
   End ELSE
Step 5 -> End Loop While
Step 6 -> loop While i < n1 && array1[i]!=array2[j]
   Print array1[i++]
Step 7 -> End Loop While
Step 8 -> loop While j < n2 && array2[j]!=array1[i]
   Print array2[j++]
Step 9 -> End Loop While
STOP

Ví dụ

#include <stdio.h>
int main(int argc, char const *argv[]) {
   int array1[]= {1, 4, 6, 9, 12};
   int array2[]= {2, 4, 7, 8, 9, 10};
   int n1, n2, i=0, j=0;
   n1 = sizeof(array1)/sizeof(array1[0]); //Calculating number of elements in array1
   n2 = sizeof(array2)/sizeof(array2[0]); //Calculating number of elements in array2
   while(i < n1 && j < n2) {
      if(array1[i] <array2[j]) //checking whether the element of array1 is smaller than array2
         printf("%d\n", array1[i++]);
      else if (array1[i] > array2[j]) //checking whether the element of array2 is smaller than array1
         printf("%d\n", array2[j++]);
      else { //if they are equal increment both i and j      
         i++;
         j++;
      }
   }
   while(i < n1 && array1[i]!=array2[j]) //print remaining array1
      printf("%d\n", array1[i++]);
   while(j < n2 && array2[j]!=array1[i]) //print remaining array1
      printf("%d\n", array2[j++]);
   return 0;
}

Đầu ra

Nếu chúng ta chạy chương trình trên thì nó sẽ tạo ra kết quả sau

1
2
6
7
8
10
12