2016-04-03 10 views
-4

Aşağıda gösterdiğim gibi, Array yalnızca 1,2 veya 3 olacaktır. Bu dizinin milyonlarca öğesi olabilir.En küçük depolama alanı ile C# içinde çiftleri içeren sıralama dizisi

Initial-array =[1,3,2,1,2,3,2,1,3,1,2,1,2,2] 

I

Sorted-array=[1,1,1,1,1,2,2,2,2,2,2,3,3,3] 

herhangi tavsiyeleri son derece kayda değer asgari depolama ile C# aşağıda gösterildiği gibi bir dizi sıralamak istiyoruz. Birkaç çözüm denedim ama hepsi yeni bir liste oluşturdu, bu yüzden birçok geçici depolama alanına maruz kaldım.

Teşekkür Yani

+2

Sırayla ayırmayın. Sadece kaynak dizinin üzerine gelin ve bulduğunuz 1s, 2s ve 3s sayısını sayar. Bu sadece 3 tamsayı alan alacak. – LodeRunner28

+0

@ LodeRunner28 Doğru görüşme yanıtı için sadece 2'ye ihtiyacın olduğunu düşünüyorum ... –

+4

Yan not: "denenmiş çok" bir çabanın gösterdiği bir gösteri değildir. Sıralama dizileri için çoğu çözümün dizinin bir kopyasını gerektirdiğine inanmak zordur (çoğu tür yerinde olduğu gibi). Makaleleri denediğin/bağladığınızı göstermek için genellikle daha iyidir (neden bir cümle ile birlikte işe yaramaz). –

cevap

1

, belki Array.Sort() uygun bir çözüm olacaktır.

+0

Hayır, olmayacak ... Ama iyi deneme :) (SO bakış açısından açıkça geçerli bir cevap, sadece OP yapmaya yardımcı olmaya çalışacaklarına yardım etmeyecek) –

+0

@AlexeiLevenkov Daha fazla detaylandırma daha az şifreli olurdu Gelecek okuyucular için ... – spender

+0

Herkese teşekkürler .. Benim asıl sorunum çok daha karmaşıktı ama hızlı sıralama ile diziyi minimum depolamayla sıralayabildiğimi fark ettim. Yardımlarınız için teşekkürler ... Zaman ayırın. –