本帖最后由 Trik 于 2019-1-10 10:29 编辑
基础班的一道数组顺序题,本来很简单的一道题,但是理解成了不考虑顺序也要判断相等,然后当时还没学到排序,就想着不用排序搞出来,最后终于强行搞出来了。分享一下代码。可能还有bug,请大神指教!
在主方法里定义两个数组 再定义一个方法用于比较两个数组里是否相等 public static ? equals(int[] arr1,int[] arr2)
功能:比较两个数组是否相等(长度和内容均相等则认为两个数组是相同的,不考虑顺序是否一样)
[AppleScript] 纯文本查看 复制代码 public class Quiz4 {
public static void main(String[] args){
int[] arry1={1,2,3,4,5};
int[] arry2={1,2,4,5,3};
System.out.println(equals(arry1,arry2));
}
public static boolean equals(int[] arr1,int[] arr2){
//arr1作为外循环和arr2内循环相比的结果返回值
boolean result=false;
//arr2作为外循环和arr1内循环相比的返回值
boolean result1=false;
//计数器,记录每个外循环数组元素对应内循环数组元素不同的次数
int count=0;
//判断两个数组长度是否一样,一样执行下列操作,不一样返回false
if(arr1.length==arr2.length){
//嵌套循环,使得arr1的每一个元素可以和arr2的每个元素相比较
out:for(int i=0;i<arr1.length;i++) {
for (int j = 0; j < arr2.length; j++) {
//两数组元素相等时,break出内循环,重置计数器
if(arr1[i]==arr2[j]){
result = true;
count=0;
break;
}
//当外循环数组元素和内循环数组元素全部不同(即计数器加到和数组长度相等时),返回false,直接跳出外循环
else if(arr1[i]!=arr2[j]){
//内循环每次arr1和arr2的元素不同时,计数器+1
count++;
while(count==arr2.length){
result = false;
break out;
}
}
result=true;
}
}
int count1=0;
//原理和上述嵌套循环相同,外循环改为arr2,内循环改为arr1
out1:for(int i=0;i<arr2.length;i++){
for(int j=0;i<arr1.length;j++){
if(arr2[i]==arr1[j]){
result1 = true;
count1=0;
break;
} else if(arr2[i]!=arr1[j]){
count1++;
while(count1==arr2.length){
result1 = false;
break out1;
}
}
result1=true;
}
}
}else{
result=false;
}
//将两个嵌套循环(arr1和arr2相比和arr2和arr1相比)的返回结果之进行逻辑与操作,得到最终结果
return result && result1;
}
}
|