我需要这个Java数组的帮助

时间:2015-05-17 10:40:58

标签: java

返回一个包含与给定数组完全相同的数字的数组,但重新排列以便所有零都在数组的开头分组。非零数字的顺序无关紧要。所以{1,0,0,1}变为{0,0,1,1}。您可以修改并返回给定的数组或创建一个新数组。

3 个答案:

答案 0 :(得分:1)

保持2个指针,一个在开始,另一个搜索0。如果找到零,则交换它们,然后向前移动指针。

答案 1 :(得分:0)

这可能不是最快的代码,但对于较小的数组,但我会做这样的事情:

    for(int index = 0; index<array.length; index++ ){

        for(int search = index+1; search<array.length; search++){
            if(array[search]==0){
                int tempStorage = array[index];
                    array[index]= array[search];
                    array[search]= tempStorage;
            }
        }       
    }

答案 2 :(得分:0)

使用自定义比较器对数组进行排序(请参阅https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#sort(T[],%20java.util].Comparator)

在比较器中,如果它不是0,则使用默认的int compare(参见https://stackoverflow.com/a/9150459/241294)。

类似的东西:

int compare(int a, int b)
{
  if (a == 0 && b == 0)
    return 0;
  if (a == 0)
    return -1;
  if (b == 0)
    return 1;
  else
    return Integer.compareTo(a, b);
}