首页 文章

我需要这个Java数组的帮助

提问于
浏览
-3

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

3 回答

  • 0

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

  • 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;
                }
            }       
        }
    
  • 1

    使用自定义比较器对数组进行排序(请参阅[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);
    }
    

相关问题