2013-02-20 101 views
2

的foreach所以我得到了這所學校分配:排序整數數組在Java

寫方法採取兩個整型數組,並使用foreach循環排序x[]到​​。

x[]是大小爲10,具有Math.random()初始化所有的元件,並且是​​大小> 10和零填充。該方法應該將x[]數組排序爲​​和return y[]

由於我只剩下foreach,我無法想出一個方法來引用數組中的其他元素來比較它們。有任何想法嗎?

+0

你是什麼意思?「由於我只剩下foreach,我無法想出一個方法來引用數組中的其他元素來比較它們。」? – 2013-02-20 23:02:44

+0

Java對於(E elem:collection){}有一種foreach語句''但是你確定你必須使用它嗎? – gd1 2013-02-20 23:03:21

+0

@RaulGogo:我正在尋找一種方法來做一些類似於經典for循環的方法:'if(x [i] 2013-02-20 23:06:10

回答

0
int[] crazySort(int[] x, int[] y) { 

    System.arraycopy(x, 0, y, 0, x.length); 

    int i = 1; // cheating 
    for (int n : y) { // <- this is your foreach, you will never use the n variable :D 
     if (i == x.length) break; // cheating again 
     for (int j = i-1; j >= 0; j--) { // finally doing something reasonable 
      if (y[j+1] < y[j]) { 
       int temp = y[j+1]; 
       y[j+1] = y[j]; 
       y[j] = temp; 
      } 
     } 
     i++; 
    } 

    return y; 

} 

希望老師發現它很有趣,至少和練習語句一樣有趣。此解決方案使用java「foreach」循環,並且練習語句不會告訴您僅使用它。

+0

int [] x = new int [] {15,10,7, 1,7,6,27,8,2,17}; int [] y = new int [10]; int index; int count; (int i1:x)的 { index = 0; count = 0; (int i2:x){ if(i2 2013-02-20 23:21:05

+0

你的朋友的解決方案似乎'hacky'足以獲得好評。 :P改變變量的名字,放幾個無用的計數器,就完成了。 – gd1 2013-02-20 23:23:55

2

這是我100%認真的回答。

public static void completelyLegitSort(int[] x,int[] y){ 
    for(int n:x){ 
     System.arraycopy(x, 0, y, 0, x.length); 
     java.util.Arrays.sort(y); 
     break; 
    } 
} 
+0

+1你是個天才!但要禮貌,你不能改變數組x! :D – gd1 2013-02-20 23:56:26

+1

@ gd1你說得對,我修正了它 – Zane 2013-02-21 00:10:26

+0

爲什麼在循環之後調用'java.util.Arrays.sort(y);'for循環(x.length時間)而不是一個調用? – alfasin 2013-02-21 19:27:02