Programa C para encontrar elementos de array comunes entre dos arrays

Aquí construiremos un programa en C para encontrar elementos de array comunes entre dos arrays. Dadas dos arrays, tenemos que encontrar elementos comunes en ellas utilizando los siguientes 2 enfoques:

  1. Usando la fuerza bruta
  2. Usando Merge Sort y luego Traversing

Aporte: 

array1[] = {8, 2, 3, 4, 5, 6, 7, 1}
array2[] = {4, 5, 7, 11, 6, 1}

Producción:

Common elements are: 4 5 6 7 1 

Enfoque 1:

Este es un enfoque de fuerza bruta, simplemente recorra en la primera array, para cada elemento de la primera array, recorra en la segunda array para encontrar si existe allí o no, si es cierto, verifíquelo en la array de resultados (para evitar repeticiones), después de eso, si descubrimos que este elemento no está presente en la array de resultados, imprímalo y guárdelo en la array de resultados.

C

// C Program to demonstrate scrunity of 
// 2 Common Array Elements Using Brute force
#include <stdio.h>
  
int main()
{
    int array1[] = { 8, 2, 3, 4, 5, 6, 7, 1 };
    int array2[] = { 4, 5, 7, 11, 6, 1 };
    int i, j, flag, x, k = 0;
    int result[100];
    printf("Common elements are: ");
    
    // To traverse in array1.
    for (i = 0; i < sizeof(array1) / 4; i++) {
        
        // To traverse in array2.
        for (j = 0; j < sizeof(array2) / 4; j++) {
            
            // To match elements of array1 with elements of
            // array2.
            if (array1[i] == array2[j]) {
                
                flag = 0;
                
                // To traverse in result array.
                for (x = 0; x < k; x++) {
                    
                    // Check whether found element is
                    // already present in result array or
                    // not.
                    if (result[x] == array1[i]) {
                        flag++;
                    }
                }
                
                // If we found a new element which is common
                // in both arrays then store it in result
                // array and print it.
                if (flag == 0) {
                    
                    result[k] = array1[i];
                    printf("%d ", result[k]);
                    k++;
                }
            }
        }
    }
}
Producción

Common elements are: 4 5 6 7 1 

Enfoque 2: 

Esta lógica se puede aplicar a la array ordenada, si no se proporciona la array ordenada, ordénela utilizando la ordenación por combinación ya que su complejidad de tiempo es menor y luego aplique este enfoque.

  1. Recorra una array usando dos variables, i para array1 y j para array2.
  2. Compruebe si el elemento de array1 es menor que el elemento de array2 y luego i++.
  3. Compruebe si el elemento de array2 es menor que el elemento de array1 y luego j++.
  4. Verifique si el elemento de la array1 es igual al elemento de la array2, luego verifique si se imprimió antes o no, si no, imprímalo y guárdelo en la array de resultados.

C++

// C Program to demonstrate scrunity of
// 2 Common Array Elements Using Merge 
// Sort and then Traversing
#include <stdio.h>
  
int main()
{
    int array1[] = { 1, 2, 2, 3, 5, 6, 7, 8, 18, 29, 37 };
    int array2[] = { 2, 2, 4, 5, 7, 9, 10, 18 };
    int i = 0, j = 0, flag, x, k = 0;
    int result[100];
    
    // Calculate size of arrays
    int array1_size = sizeof(array1) / sizeof(array1[0]);
    int array2_size = sizeof(array2) / sizeof(array2[0]);
    
    printf("Common elements are: ");
    
    // Step 1
    while (i < array1_size && j < array2_size) {
        
        // Step 2
        if (array1[i] < array2[j]) {
            i++;
        }
        // Step 3
        else if (array1[i] > array2[j]) {
            j++;
        }
        // Step 4
        else {
            flag = 0;
            
            // To traverse in result array.
            for (x = 0; x < k; x++) {
                
                // Check whether found element is already
                // present in result array or not.
                if (result[x] == array1[i]) {
                    flag++;
                }
            }
            
            // If we found a new element which is common in
            // both arrays then store it in result array and
            // print it.
            if (flag == 0) {
                printf("%d ", array1[i]);
                result[k] = array1[i];
                k++;
            }
            i++;
            j++;
        }
    }
}
Producción

Common elements are: 2 5 7 18 

Publicación traducida automáticamente

Artículo escrito por pushpamkjha14 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *