返回一个包含与给定数组完全相同的数字的数组,但重新排列,以便所有零都在数组的开头分组 . 非零数字的顺序无关紧要 . 所以{1,0,0,1}变为{0,0,1,1} . 您可以修改并返回给定的数组或创建一个新数组 .
保持2个指针,一个在开始,另一个搜索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; } } }
使用自定义比较器对数组进行排序(请参阅[https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#sort(T[],%20java.util].Comparator)](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); }
3 回答
保持2个指针,一个在开始,另一个搜索0 . 如果找到零,则交换它们,并向前移动指针 .
这可能不是最快的代码,但对于较小的数组,但我会做这样的事情:
使用自定义比较器对数组进行排序(请参阅[https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#sort(T[],%20java.util].Comparator)](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) .
就像是: