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