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:
- Usando la fuerza bruta
- 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++; } } } } }
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.
- Recorra una array usando dos variables, i para array1 y j para array2.
- Compruebe si el elemento de array1 es menor que el elemento de array2 y luego i++.
- Compruebe si el elemento de array2 es menor que el elemento de array1 y luego j++.
- 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++; } } }
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