如果有零则向左移动

时间:2014-10-18 18:38:03

标签: java arrays sorting

我正在尝试创建一个程序,它将采用一个整数数组,比如说{2,0,32,0,0,8}可以是任意长度,并且使得所有非零数字都是左下角的索引,所有的零都移动到最后。 例如,{2,0,32,0,0,8}变为{2,32,8,0,0,0}。 此数组可以是任意长度,并包含任何非负整数。 这就是我到目前为止所做的:

public static int[] moveLeft(final int[] a) {
   for (int i = 0; i < a.length; i++) {
       if (a[i] != 0) {
           for (int j = 0; j < a.length; j++) {
               if (a[j] == 0) {
                   a[j] = a[i];
                   a[i] = 0;
               }
           }
       }
   }
   return a;

}

然而,当我这样做时,它不适用于第一个和第二个字符。如果我有{1,2,0,1},它将返回{2,1,1,0},它应该返回{1,2,1,0}。有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

你的内部循环应该在索引i之前停止。改变这个

for (int j = 0; j < a.length; j++) {

for (int j = 0; j < i; j++) {

然后你的代码适合我。