2016-10-21 24 views
-4

我想從用戶做一個輔助數組輸入,並使這些數字從低到高升序,我找不到錯誤 我可以用一個元素很容易,但我想這與兩個元素的升序。C# - 使升序輔助陣列

這是我的代碼

class Program 
    { 
     static void Main(string[] args) 
     { 
      int[,] Matrice = new int[2, 3]; 
      int i, j, m, n, temp; 

      for (i = 0; i < 2; i++) 
      { 
       for (j = 0; j < 3; j++) 
       { 
        Console.WriteLine("Enter The Number :(" + i + "," + j + ")"); 
        Matrice[i, j] = int.Parse(Console.ReadLine()); 
       } 
      } 

      for (i = 0; i < 2; i++) 
       for (j = 0; j < 3; j++) 

      for (m = i + 1; m < 2; m++) 
       for (n = j + 1; n < 3; n++) 

      if (Matrice[i, j] > Matrice[m,n]) 
      { 
       temp = Matrice[i,j]; 
       Matrice[i, j] = Matrice[m, n]; 
       Matrice[m, n] = temp; 
      } 

      for (i = 0; i <2; i++) 
      { 
       for (j = 0; j <3; j++) 
       { 
        Console.WriteLine("Ascending from low to high :(" + i + "," + j + ") est " + Matrice[i, j]); 
       } 
      } 
      Console.ReadKey(); 
     } 
    } 

我的輸出是錯誤的那樣:

Enter The Number :(0,0) 
5 
Enter The Number :(0,1) 
3 
Enter The Number :(0,2) 
8 
Enter The Number :(1,0) 
15 
Enter The Number :(1,1) 
3 
Enter The Number :(1,2) 
9 
Ascending from low to high :(0,0) est 3 
Ascending from low to high :(0,1) est 3 
Ascending from low to high :(0,2) est 8 
Ascending from low to high :(1,0) est 15 
Ascending from low to high :(1,1) est 5 
Ascending from low to high :(1,2) est 9 

我需要幫助:)

+3

目前這不是一個很好的問題,因爲您正在傾銷代碼並說「它不起作用!」。您需要使用調試器來縮小問題的來源並詢問相關問題。另外,可以考慮使用'OrderBy' – BradleyDotNET

+0

我不擅長英文對不起 –

回答

0

首先,你跳過第二部分的第一個項目從i + 1開始的陣列。您希望通過每個元素走路和比較,所以只需使用:

for (m = 0; m < 2; m++) 
    for (n = 0; n < 3; n++) 

其次,你需要的值被提升,當前的代碼排序下降。爲了解決這個問題,只是改變了「>」到「<」

if (Matrice[i, j] < Matrice[m, n]) 

堆疊的for循環,現在看起來就像這樣:

for (i = 0; i < 2; i++) 
      for (j = 0; j < 3; j++) 
       for (m = 0; m < 2; m++) 
        for (n = 0; n < 3; n++) 
         if (Matrice[i, j] < Matrice[m, n]) 
         { 
          temp = Matrice[i, j]; 
          Matrice[i, j] = Matrice[m, n]; 
          Matrice[m, n] = temp; 
         } 

哪些應該做你想要什麼,如果我明白你的問題正確。 PS:正如BradleyDotNET所說,您可能想要查看OrderBy以使其更容易/更高效。