快速比较int []数组的“不同”来自另一个int []数组的方法

时间:2014-09-14 05:48:25

标签: java arrays algorithm puzzle

我正试图找出一种快速的方法来比较"不同的" int数组来自另一个int数组。我将在滑动拼图解算器中使用此功能。这是一个例子:

{0,1,3,2,4,5,7,6,8}
{0,1,2,3,4,5,6,7,8}

这里,4个元素(2,3,6,7)无序。有没有快速的方法来确定这个?我试着想办法,例如for循环,但这似乎很幼稚。此外,可能使用以下内容:

Arrays.hashCode(array1) - Arrays.hashCode(array2)

将是一种确定的方法吗? 另外,请注意,我不一定要确定许多元素是如何乱序的,而是因为我将在A *启发式中使用它,因此只是两个数组的不同之处。

2 个答案:

答案 0 :(得分:0)

我认为你不会比循环更有效率:

different = 0;
for (i=0; i<len; i++) {
  if (*a++ != *b++) { // walk through lists using 1 pointer each
    different++;
  }
}

答案 1 :(得分:0)

    int a[]= {0,1,3,2,4,5,7,6,8};
    int b[]={0,1,2,3,4,5,6,7,8};
    int diff=0;
    for (int i=0;i<a.length;i++){
    if(a[i]!=b[i])
    diff++;
    }