2016-03-28 19 views
0

Artan sırayla bir 2B dizi düzenlemeye çalışıyorum. Bu kod bir 1D dizisi için çalışır ancak 2D için uygulamak için mücadele ediyorum, böylece dizinin her sırasını artan sırada yerleştirir.Artan düzende bir 2B dizi düzenlemeye çalışıyorum C#

1D Böyle bir şey yapabiliriz

public static void Main(string[] args) 
    { 
     int[] sam = { 4, 7, 2, 0 }; 

     Array.Sort(sam); 
     foreach (int value in sam) 
     { 
      Console.Write(value); 
      Console.Write(' '); 
     } 
     Console.WriteLine(); 
    } 

2D

public static void Main(string[] args) 
     { 
      int[] sam = { 4, 7, 2, 0 }, {4, 6, 2, 0}; 

      Array.Sort(sam); 
      foreach (int value in sam) 
      { 
       Console.Write(value); 
       Console.Write(' '); 
      } 
      Console.WriteLine(); 
     } 
+0

Eğer bir örnek verebilir misiniz? –

cevap

0

: Burada

static void Main(string[] args) { 
     int[][] sam = new int[2][]; 
     sam[0] = new int[] {4, 6, 2, 0}; 
     sam[1] = new int[] {4, 7, 2, 0}; 

     foreach(var array in sam) 
     { 
      Array.Sort(array); 
      foreach(var item in array) 
       Console.Write(item+" "); 
      Console.WriteLine(); 
     } 
} 

, bir 2D dizi bildirirken ve ardından her dizi bir başlatılıyor zaman. Ardından, sam dizisinden döngü oluşturuyoruz ve daha sonra her 1D dizisini buna göre sıralıyoruz.

0

Birden çok çözüm var, düşündüğüm bir çözüm Array dizisini kullanıyor (Jagged Array). Sen

int[][] sorted = numbers2.Select(x=> string.Join("-", x.ToArray())) 
      .OrderBy(x=>x) 
      .Select(x=> x.Split('-').Select(int.Parse).ToArray())  
      .ToArray(); 

Başka bir seçenek kullanılarak Jagged dizi sıralanmış alabilirsiniz

int[][] numbers2 = new int[][] { 
     new int[]{4,5,6}, 
     new int[]{1,2,3}, 
     new int[]{7,8,9} 
     ... 
    }; 

aşağıda tanımlandığı gibi pürüzlü dizi varsa

diyelim, girişinizi daha yapabileceği bir 2d dizidir edelim veya daha az aynı ama çıktı Jagged dizi sıralanır.

int[][] sorted_array = numbers.Cast<int>()  
     .Select((x, i) => new { Index = i, Value = x }) 
     .GroupBy(x => x.Index/(numbers.GetUpperBound(0) +1)) 
     .Select(x => string.Join("-", x.Select(v => v.Value))) 
     .OrderBy(x=>x) 
     .Select(x=> x.Split('-').Select(int.Parse).ToArray())  
     .ToArray(); 

Bunlar sadece seçeneklerimdir, çözümünüzün hangisi olduğunu seçmek en iyisi olacaksınız.

Kontrol bu Example

İlgili konular