如题

解决方案 »

  1.   

    package com.xuz.csdn.july07;public class SortByZero { static int[] array = {1,5,7,0,8,2,0,9,0,0,0};

    public static void main(String[] args) {
    for (int i = array.length - 1 ; i > -1 ; i--) {
    if (array[i] == 0) {
    for (int j = i; j < array.length - 1; j++) {
    array[j] = array[j+1];
    if (array[j+1] == 0) {
    break;
    }
    if (j+1 == array.length - 1) {
    array[j+1] = 0;
    }
    }

    }

    for (int num : array) {
    System.out.print(num + " ");
    }

    }}
      

  2.   

    明明很简单的问题 被你们一群"大学生"在这里讨论1+1=?  难道在csdn就非要复杂化?
      

  3.   

    呵呵  我也觉得应该new一个等长的数组:int[] oldArray = {2,3,0};
    int[] newArray = new int[oldArray.length];
    for(int i=0;i<oldArray.length;i++) {
    if(oldArray[i]!=0) {
    newArray[i] = oldArray[i];
    }
    }这样就行了。。不用再添加什么0了
    java中int数组你不添加,他自己就是0  
    还用添加吗?
      

  4.   


    if oldArray = new int[10000000];
      

  5.   

    new一个数组你不觉得空间浪费吗!效率低
      

  6.   

    如果是集合的话List<Integer> list = new ArrayList<Integer>();
    Collections.sort(list);
    for (int i = list.size()-1; i >=0; i--) {
    System.out.println(list.get(i));
    }
    先转换为集合?
      

  7.   


    如果有足够内存,new一个array未尝不是一个办法。这个是典型的空间换时间。算法复杂度最低,效率反而比你在单个数组里腾转挪移快。当然,这个代码有问题,应当i,j两个计数
      

  8.   

    int ai[] = {5,6,7,0,8,9,0,7};
    int count = 0;
    for (int ae:ai) {
    if (ae != 0) {
    System.out.println(ae);
    } else {
    count++;
    }
    }

    for (int i = 1; i<=count; i++) {
    System.out.println("0");
    }
      

  9.   

    我来结贴 
    import java.util.Random;public class Test { public static void main(String args[]) {
    int[] array = new int[10000000];
    Random rand = new Random();
    for (int i = 0; i < 10000000; i++) {
    array[i] = rand.nextInt(10);
    }
    long start = System.currentTimeMillis();
    // 我的63ms
    int index = 0;
    for (int i = 0; i < array.length; i++) {
    if (array[i] != 0) {
    array[index] = array[i];
    array[i] = 0;
    index++;
    }
    } /*
     * 17楼的 跑死机了 for (int i = array.length - 1 ; i > -1 ; i--) { if
     * (array[i] == 0) { for (int j = i; j < array.length - 1; j++) {
     * array[j] = array[j+1]; if (array[j+1] == 0) { break; } if (j+1 ==
     * array.length - 1) { array[j+1] = 0; } } } }
     */
    long end = System.currentTimeMillis();
    System.out.print(end - start); }
    }
      

  10.   

    补一组不随机的看效果
    public static void main(String args[]) {
    int[] array = {0,3,2,9,6,0,0,0,1,5,7}; int index = 0;
    for (int i = 0; i < array.length; i++) {
    if (array[i] != 0) {
    array[index] = array[i];
    array[i] = 0;
    index++;
    }
    }
    for (int i = 0; i < array.length; i++) {
    System.out.println(array[i]);
    }
    }
    打印:
    3
    2
    9
    6
    1
    5
    7
    0
    0
    0
    0
      

  11.   

    没有你们想的这么复杂吧!不用记下零元素所在位置的数组下标吧!
    是int的数组,是零的元素那就是零咯。 public static void main(String[] args) 
    {
    int[] array = {0,1,2,3,5,0,2,0,3};
    int count=0;
    for(int x:array){
    if(x ==0)
    count++;
    else 
    System.out.print(x);
    }
    for(int i=0;i<count;i++){
    System.out.print(0);
    }
    }