2014-03-25 77 views
0

我正在嘗試做一個排序隨機數組的應用程序 我做了一些代碼,我看不出它有什麼問題,它返回了錯誤的值 筆記:我試圖學習編程。所以不要提出解決問題的全部不同方法。我只想看看這段代碼有什麼問題,這樣我可以變得更好。 RandomArrayCreator.create()返回的內容僅僅是一個隨機數字的數組。在Java中對隨機數組進行排序

public class ArraySorter 
{ 
public static void main(String[] args) 
{ 
    int[] siyahi = RandomArrayCreator.create(); 
    int[] siralanmish = new int[siyahi.length]; 

    for (int i=0;i<siyahi.length;i++) 
    { 
     for (int j=0;j<siyahi.length;j++) 
     { 
      for (int k=j+1;k<siyahi.length;k++) 
      { 
       if (siyahi[k]<siyahi[j]) j=k; 
      } 
      siralanmish[i]=siyahi[j]; 
      siyahi[j]=siyahi.length+1; 
     } 
     System.out.println(siralanmish[i]); 
    } 
} 

}

+0

這'siyahi [J] = siyahi.length + 1;'看起來suspiouis – MadProgrammer

+0

嗯......什麼排序方法是你想實現? – Dyrborg

+2

什麼類型的排序使用三個嵌套循環? –

回答

0

既然你提到你想了解如何改善當前的程序,這裏是將你的代碼修改簡約產生一個排序的數組。

的幾個注意事項上的變化:

1.

if (siyahi[k]<siyahi[j]) j=k; 

這個我認爲是試圖在每一個指標來交換值。相反,您將k的值分配給j,這會導致整個for循環出現問題。我換成這與以下情況:

if (siyahi[k]<siyahi[j]) 
    { 
     int temp = siyahi[j]; 
     siyahi[j] = siyahi[k]; 
     siyahi[k] = temp; 
    } 

這將創建一個臨時變量來存儲值中的一個,這樣就可以在每個索引處交換價值,而不會丟失你的價值觀之一。

siralanmish[j]=siyahi[j]; 

這允許直接的值從相同的索引從源陣列到目標陣列複製:

2.

siralanmish[i]=siyahi[j]; 

這是與替換。

3.

siyahi[j]=siyahi.length+1; 

此代碼將只需填寫了長度+ 1的值的數組,你原來的數組,你將失去你的其他值。

您與修復代碼低於:

public class ArraySorter 
    { 
    public static void main(String[] args) 
    { 
     int[] siyahi = RandomArrayCreator.create(); 
     int[] siralanmish = new int[siyahi.length]; 

     for (int i=0;i<siyahi.length;i++) 
     { 
      for (int j=0;j<siyahi.length;j++) 
      { 
       for (int k=j+1;k<siyahi.length;k++) 
       { 
        if (siyahi[k]<siyahi[j]) 
        { 
         int temp = siyahi[j]; 
         siyahi[j] = siyahi[k]; 
         siyahi[k] = temp; 
        } 
       } 
       siralanmish[j]=siyahi[j]; 
      } 
      System.out.println(siralanmish[i]); 
     } 
    } 
+0

非常感謝,它的工作原理。但是,當我嘗試這段代碼時,我得到一個錯誤,如「解析時到達文件末尾」,任何想法爲什麼? – user2176890

1

我知道你不想的建議,但我會提供一個反正。

希望這將有助於引導您一路走來,但仍然允許您提出自己的解決方案。

從最小到最大排序。

did I have swap an element? 
while I swapped an element 
    assume I did not swap an element 
    for element i in the array 
     is i > i+1? 
      if yes 
       swap the elements 
       I did swap an element 
      else 
       do nothing 
+0

+1非常清晰的僞代碼。 – aliteralmind