比较两个未排序的int数组的代码。 C

时间:2015-02-18 02:13:50

标签: c arrays integer return compare

我需要创建一个代码来比较数组中的两个而不对它们进行排序。它们必须具有相同的长度,并且按任何顺序包含相同的元素。

  • []中的每个整数也在b []
  • b []中的每个整数也在[]
  • 所有这些常见值看起来完全相同 a []和b []
  • 的次数

示例:

  • a = {1,2,3},b = {2,3,4}返回0
  • a = {1,2,3}; b = {2,3,1}返回1
  • a = {1,2,2}; b = {2,2,1}返回1
  • a = {1,2,2}; b = {2,1,1}返回0
  • a = {1,1,2,2,2}; b = {2,1,2,1,2}返回1

我只是不知道该怎么做......

3 个答案:

答案 0 :(得分:-1)

如果数组未排序,您将得到二次算法。您可以在算法开始时检查数组长度,如果它们相等,比如N,你会做这样的事情

      int result = 1;
          for (int j=0;j<N;j++) {
            bool found = false;
            for (int i=0;i<N && !found;i++) {
              if (a[j] == b[i]) found = true;
            }
            if (!found) return 0;
}

答案 1 :(得分:-1)

I took sometime away and got it within a minute:D


int same_contents(int a[], int b[], int n){
int maxA=0,maxB=0,counterA=0,counterB=0;
int i,k,j,x;
for(i=0; i<n; ++i)
    if (a[i]>maxA)maxA=a[i];
for(i=0; i<n; ++i)
    if (b[i]>maxB)maxB=b[i];
if (maxA != maxB) return 0;
for(j=0;j<n;++j){
        counterA=0;
        counterB=0;
    for(k=0;k<n;++k){
        if(maxA==b[k])counterA++;
        if(maxA==a[k])counterB++;
    }
    if (counterA != counterB) return 0;
    else continue;
}
return 1;
}

答案 2 :(得分:-1)

你可以试试这个!

#include<stdio.h>
int check_same_array(int a[], int b[],int lenA,int lenB)
{
    int result = 0;
    bool flag = false;
    int i = 0,j=0;
    if (lenA != lenB)
        return 0;
    for (i = 0; i < lenA; i++)
    {
        flag = false;
        for (j = 0; j < lenB; j++)
        {
            if (a[i] == b[j])
                flag = true;
        }
        if (!flag)
        {
            result = 0;
            break;
        }

    }
    if (flag)
        result = 1;
    return result;
}
int main()
{
    int a[5] = { 2, 2, 3, 3 ,5};
    int b[5] = { 3, 3, 2, 2 ,5};
    int lenA = sizeof(a) / sizeof(int);
    int lenB = sizeof(b) / sizeof(int);
    printf("%d\n", check_same_array(a, b, lenA, lenB) && check_same_array(b, a, lenB, lenA));
    return 0;
}

check_same_array用于检查数组A中的每个项是否在数组B中。
因此,如果数组A中的每个项都在数组B中,并且数组B中的每个项都在数组A中 两个数组的项目是相同的。