我的代码确定两个数组是否排列总是返回false,为什么?

时间:2017-06-04 22:01:19

标签: java

我已经写过这个来对两个数组进行排序,然后比较这些值以查看它们是否相同,但它总是返回false,我无法弄清楚原因。

应该找出两个数组是否是彼此的排列。

public class Permutations {

    public static void main(String[] args) {
        int[] a = {1,4,6,7,8,34};
        int[] b = {34,6,8,1,4,7};

        System.out.println(arePermutations(a, b));
    }

    public static boolean arePermutations(int[] a, int[] b)
    {
        int count = 0;
        int temp = 0;
        if(a.length == b.length)
        {
            for(int i=0; i<a.length-1; i++)
                for(int j=0; j<a.length-1; j++)
                    if(a[i] > a[j+1] && i>j+1)
                    {
                        temp = a[i];
                        a[i] = a[j+1];
                        a[j+1] = temp;
                    }
            {
                for(int i=0; i<b.length-1; i++)
                    for(int j=0; j<b.length-1; j++)
                        if(b[i] > b[j+1] && i>j+1)
                        {
                            temp = b[i];
                            b[i] = b[j+1];
                            b[j+1] = temp;
                        }
            }
            for(int i=0; i<a.length; i++)
                if(a[i] == b[i])
                {
                    count++;
                }
            if (count == a.length)
            {
                return true;
            }
            else return false;
        }
        else return false;

    }
}

1 个答案:

答案 0 :(得分:1)

问题在于冒泡排序的实施。将排序循环更改为以下内容:

    for (int i = 0; i < a.length; i++) {
        for (int j = 0; j < a.length - 1; j++) {
            if (a[j] > a[j + 1]) {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
    }

    for (int i = 0; i < b.length; i++) {
        for (int j = 0; j < b.length - 1; j++) {
            if (b[j] > b[j + 1]) {
                temp = b[j];
                b[j] = b[j + 1];
                b[j + 1] = temp;
            }
        }
    }

此代码有效,因为冒泡排序只是交换相邻元素,如果它们需要交换,但需要多次遍历整个数组(最多为数组中的项目数),以使所有项目进入正确的位置。