Bagaimana cara mengurutkan array bergerigi dari array? [duplikat]
var jaggedarray = new int[3][];
jaggedarray[0] = new int[5] { 99, 999, 49, 79, 59 };
jaggedarray[1] = new int[3] { 199, 1999, 149 };
jaggedarray[2] = new int[2] { 999, 500 };
dari array bergerigi ini, saya ingin mengurutkan baris dengan array1D yang berbeda (dapat berupa integer atau string ),
tentu saja jumlah baris pada jagged array sama dengan jumlah elemen pada array1D, contoh:
Contoh
object[] array1D= {12,7,3}
Sunting: Jumlah elemen dan tipe data dalam array bergerigi adalah acak, yang perlu saya cari adalah posisi baru setelah mengurutkan dari array1D, dan berdasarkan posisi baru ini untuk mengurutkan untuk array bergerigi.
berdasarkan hasil yang dipesan dari array1D, setelah mengurutkan, hasil yang saya inginkan untuk array bergerigi adalah:
jaggedarray[0] =new int[2] { 999, 500 };
jaggedarray[1] = new int[3] { 199, 1999, 149 };
jaggedarray[2] = new int[5] { 99, 999, 49, 79, 59 };
Saya telah mencari artikel tentang array bergerigi tetapi kebanyakan dari mereka menyebutkan penyortiran kolomnya.
Bagaimana cara mengurutkan array bergerigi dari array lain?
Jawaban
Jika saya memahami pertanyaannya dengan benar, Anda dapat Zipmengatur 2 larik Anda bersama-sama, lalu gunakan OrderBypada elemen dalam larik 1D, Select( proyek ) keluar dari larik asli, lalu gunakan ToArrayuntuk kembali ke larik bergerigi Anda
object[] array1D = {12, 7, 3};
var results = jaggedarray
.Zip(array1D, (ints, objects) => (ints, objects))
.OrderBy(x => x.objects)
.Select(x => x.ints)
.ToArray();
foreach (var result in results)
Console.WriteLine(string.Join(", ", result));
Keluaran
999, 500
199, 1999, 149
99, 999, 49, 79, 59
Perbarui, atau secara memalukan (bagi saya), gunakan Array.Sort():)