2014-02-15 24 views
2

如何将零点放置在数组中,我重新排列了正数和负数,但是如何处理零点,下面是我的代码。排列数组元素正负零

int i = 0; 
int arr[] = { 3, 7,-12, 8, -1, 6, -6, 5, -2}; 
int j = arr.length - 1; 
while (true) { 
    if (arr[i] > 0) { 
     ++i; 
    } 
    if (arr[j] < 0) { 
     --j; 
    } 
    if (i > j) 
     break; 
    if (arr[i] < 0 && arr[j] > 0) { 
     int temp = arr[i]; 
     arr[i] = arr[j]; 
     arr[j] = temp; 
    } 
} 

for (int j2 = 0; j2 < arr.length; j2++) { 
      System.out.print(arr[j2]); 
     } 

如果我在数组中放置零,它不显示任何输出。否则它给37586-1-6-12-2我正在寻找与最小比较的解决方案。

+0

请详细说明一下多一点? – rendon

+2

我们不知道这段代码应该做什么。它不输出任何内容,所以无论数组是否包含0,都不会有任何输出。它看起来像你想排序一个数组。使用Arrays.sort()。 –

回答

0

这里是一个解决该问题的代码。我添加了现有算法的类似部分(原来我做了一些改动,现在它检查>=0而不是>0)。在第二部分中,我对正数和0数字也做了同样的处理。

int i = 0; 
int arr[] = {0, 3, 7, -12, 8, -1, 0, 6, -6, 5, -2, 0, -1, 0}; 

int j = arr.length - 1; 
while (true) { 
    if (arr[i] >= 0) { 
     ++i; 
    } 
    if (arr[j] < 0) { 
     --j; 
    } 

    if (i > j) 
     break; 
    if (arr[i] < 0 && arr[j] >= 0) { 
     int temp = arr[i]; 
     arr[i] = arr[j]; 
     arr[j] = temp; 
    } 
} 

// The second part for positives and 0-s, starting for [0, j] (j is not changed) 
i = 0; 

while (true) { 
    if (arr[i] > 0) { 
     ++i; 
    } 
    if (arr[j] == 0) { 
     --j; 
    } 

    if (i > j) 
     break; 

    if (arr[i] == 0 && arr[j] > 0) { 
     int temp = arr[i]; 
     arr[i] = arr[j]; 
     arr[j] = temp; 
    } 
} 

for (int anArr : arr) { 
    System.out.print(anArr + ", "); 
} 

结果是:

5, 3, 7, 6, 8, 0, 0, 0, 0, -6, -2, -1, -1, -12, 
0

试试吧 -

import java.util.*; 

public class Example1 { 
    public static void main (String [] args) { 
     int j; 
     boolean flag = true; 
     int temp; 
     int arr[] = {-100, 0, 0, 0, 3, 7, -12, 0, 8, -1, 6, -6, 5, -2}; 

     while(flag) { 
      flag = false; 
      for(j=0; j < arr.length -1; j++) { 
      if (arr[j] < arr[j+1]) { 
       temp = arr[j];  
       arr[j] = arr[j+1]; 
       arr[j+1] = temp; 

       flag = true;   
      } 
      } 
     } 
     System.out.println(Arrays.toString(arr)); 
    } 
} 

输出:

[8, 7, 6, 5, 3, 0, 0, 0, 0, -1, -2, -6, -12, -100] 

解决方案以最小的比较。 : - )

public class Example2 { 
    public static void main (String [] args) { 
     int arr[] = {-100, 0, 0, 0, 3, 7, -12, 0, 8, -1, 6, -6, 5, -2}; 
     Arrays.sort(arr); 

     System.out.println(Arrays.toString(arr)); 
    } 
} 

输出:

[-100, -12, -6, -2, -1, 0, 0, 0, 0, 3, 5, 6, 7, 8] 
+0

谢谢,我正在寻找最小化比较的方法。 – zdhim