2014-02-15 58 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