How to check if Two Arrays have Same Elements (Regardless of Order) in C


How to check if Two Arrays have Same Elements (Regardless of Order) in C ?

Answer

To check if two arrays have the same elements regardless of order in C, you can sort both arrays and then compare them element by element.



✐ Examples

1 Arrays with Same Elements (Order Ignored)

In this example,

  1. We create two arrays named arr1 and arr2 with the same elements but in different order.
  2. We sort both arrays using the qsort function from the stdlib.h library.
  3. We then define a function arraysEqual that checks if the sorted arrays are equal.
  4. Finally, we call arraysEqual to compare the arrays and print the result to the console.

C Program

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int compare(const void *a, const void *b) {
    return (*(int*)a - *(int*)b);
}

int arraysEqual(int arr1[], int arr2[], int size) {
    qsort(arr1, size, sizeof(int), compare);
    qsort(arr2, size, sizeof(int), compare);

    for (int i = 0; i < size; i++) {
        if (arr1[i] != arr2[i]) {
            return 0;
        }
    }
    return 1;
}

int main() {
    int arr1[] = {1, 2, 3};
    int arr2[] = {3, 1, 2};
    int size = sizeof(arr1) / sizeof(arr1[0]);

    int isEqual = arraysEqual(arr1, arr2, size);
    printf("%s\n", isEqual ? "true" : "false");
    return 0;
}

Output

true

2 Arrays with Different Elements (Order Ignored)

In this example,

  1. We create two arrays named arr3 and arr4 with different elements.
  2. We sort both arrays using the qsort function from the stdlib.h library.
  3. We then define a function arraysEqual that checks if the sorted arrays are equal.
  4. Finally, we call arraysEqual to compare the arrays and print the result to the console.

C Program

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int compare(const void *a, const void *b) {
    return (*(int*)a - *(int*)b);
}

int arraysEqual(int arr1[], int arr2[], int size) {
    qsort(arr1, size, sizeof(int), compare);
    qsort(arr2, size, sizeof(int), compare);

    for (int i = 0; i < size; i++) {
        if (arr1[i] != arr2[i]) {
            return 0;
        }
    }
    return 1;
}

int main() {
    int arr3[] = {1, 2, 3};
    int arr4[] = {4, 5, 6};
    int size = sizeof(arr3) / sizeof(arr3[0]);

    int isEqual = arraysEqual(arr3, arr4, size);
    printf("%s\n", isEqual ? "true" : "false");
    return 0;
}

Output

false

Summary

In this tutorial, we learned How to check if Two Arrays have Same Elements (Regardless of Order) in C language with well detailed examples.




More C Arrays Tutorials

  1. How to Declare an Array in C ?
  2. How to Initialize an Array in C ?
  3. How to Access Array Elements in C ?
  4. How to Access Array Elements using Index in C ?
  5. How to get First Element in Array in C ?
  6. How to get Last Element in Array in C ?
  7. How to check if an Array is Empty in C ?
  8. How to check if an Array is Not Empty in C ?
  9. How to get Sub Array in C ?
  10. How to Get Array Length in C ?
  11. How to Iterate Over an Array in C ?
  12. How to Iterate Over an Array in Reverse Order in C ?
  13. How to get the Index of Specified Element in an Array in C ?
  14. How to check if Specified Element is present in the Array in C ?
  15. How to count the Number of Occurrences of Specified Element in the Array in C ?
  16. How to Sort an Array in C ?
  17. How to Sort an Array in Ascending Order in C ?
  18. How to Sort an Array in Descending Order in C ?
  19. How to create a Two Dimensional Array in C ?
  20. How to Iterate over a Two Dimensional Array in C ?
  21. How to create a Three Dimensional Array in C ?
  22. How to Copy an Array in C ?
  23. How to Split an Array in C ?
  24. How to Join Arrays in C ?
  25. How to check if Two Arrays are Equal in C ?
  26. How to check if Two Arrays have Same Elements (Regardless of Order) in C ?
  27. How to Convert an Array of Integers to an Array of Strings in C ?
  28. How to Convert an Array of Strings to an Array of Integers in C ?
  29. How to Reverse an Array in C ?
  30. How to Shuffle an Array in C ?
  31. How to Rotate Elements in an Array in C ?
  32. How to Filter Elements of an Array based on a Condition in C ?
  33. How to Declare an Integer Array in C ?
  34. How to Declare a Float Array in C ?
  35. How to Declare a String Array in C ?
  36. How to Remove Duplicates in an Array in C ?
  37. How to Remove Specific Element from an Array in C ?
  38. How to Remove Element from Array based on a Condition in C ?
  39. How to Sort a String Array in Dictionary Order in C ?
  40. How to Concatenate Strings in Array in C ?