如何判断数组的2个子数组和相等
1个回答
展开全部
并没有系统函数可以实现这个功能,需要自行编写函数:
一、算法分析:
1、两个数组相等,需要类型相同,长度相同,各个元素值及顺序相同。
2、根据数组相等的含义,类型无需判断,因为类型不同本身就没有可比性。长度及元素值需要编写代码判断。
二、参考代码:
以整型数组为例,可以编写函数如下:
int array_cmp(int *a, int al, int *b, int bl)
{
int i;
if(al!=bl) return 0;//长度不等,返回0.
for(i = 0; i < al; i ++)
if(a[i]!=b[i]) return 0;//出现不相等元素,返回0.
return 1;//完全相等,返回1。
}
三、优化代码:
在C语言中有内存比较函数memcmp, 可以利用这一函数简化步骤,提高效率。
参考代码如下:
int array_cmp(int *a, int al, int *b, int bl)
{
int i;
if(al!=bl) return 0;//长度不等,返回0.
return memcmp(a,b,sizeof(*a)*al) == 0;//返回结果。
}
注意,使用memcmp需要引用头文件string.h。
一、算法分析:
1、两个数组相等,需要类型相同,长度相同,各个元素值及顺序相同。
2、根据数组相等的含义,类型无需判断,因为类型不同本身就没有可比性。长度及元素值需要编写代码判断。
二、参考代码:
以整型数组为例,可以编写函数如下:
int array_cmp(int *a, int al, int *b, int bl)
{
int i;
if(al!=bl) return 0;//长度不等,返回0.
for(i = 0; i < al; i ++)
if(a[i]!=b[i]) return 0;//出现不相等元素,返回0.
return 1;//完全相等,返回1。
}
三、优化代码:
在C语言中有内存比较函数memcmp, 可以利用这一函数简化步骤,提高效率。
参考代码如下:
int array_cmp(int *a, int al, int *b, int bl)
{
int i;
if(al!=bl) return 0;//长度不等,返回0.
return memcmp(a,b,sizeof(*a)*al) == 0;//返回结果。
}
注意,使用memcmp需要引用头文件string.h。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询