我想尝试弄清楚,只是需要指出正确的方向。请不要只写解决方案,我想了解我需要做些什么才能使其工作。

    static void bubbleSort() {
        int [] a = {1,3,4,2,5};
        int [] b = new int[a.length];
        int j = 0;

        for(int c = 0;c <= a.length;c++){//this loop doesnt even do anything???
            for(int i = 0;i<a.length-j;i++){

                if(a[i]>a[i+1]){
                    b[i] = a[i+1];
                    b[i+1] = a[i];
                    j++;
                }
                else{
                    b[i] = a[i];
                    b[i+1] = a[i+1];
                    j++;
                }
            }
        }

        for(int i = 0; i< b.length ; i++)
            System.out.println(b[i]);
    }

最佳答案

您的代码有很多问题-

1)您不需要额外的数组'b',可以就地进行冒泡排序。

2)考虑使用“ j”,将其替换为“ c”,然后检查这在循环中有何不同。

3)您新排序的数组出现在“ b”中,并且仍然在每一步检查条件-

if(a[i]>a[i+1])


您不认为“ b”在这里扮演角色吗?

考虑以上几点,如果仍有问题,请对此文章发表评论。

07-24 09:46
查看更多