Czy jest dostępna wbudowana obsługa języka C# do sortowania według indeksu?Czy istnieje obsługa języka C# dla sortowania opartego na indeksie?
Więcej szczegółów:
Mam kilka zestawów danych przechowywanych w indywidualnych ogólnych listach podwójnych. Są to listy o równej długości i zawierające odpowiednie elementy danych, ale te listy pojawiają się i znikają dynamicznie, więc nie mogę po prostu przechowywać odpowiednich elementów danych w klasie lub strukturze czysto. (Mam również do czynienia z niektórymi problemami ze starszymi wersjami.)
Muszę mieć możliwość sortowania tych kluczy z dowolnego zestawu danych.
Moją myślą o najlepszym sposobie zrobienia tego jest dodanie jednego poziomu pośredniego i użycie sortowania opartego na indeksie. Tego rodzaju używano od lat.
Szybkie definicja indeksu porządek oparta:
make „index”, szereg kolejnych liczb całkowitych taką samą długość jak list, to algorytm sortowania sortuje listę liczb całkowitych, tak aby anylist[index[N]]
daje n-ty element anylist w posortowanej kolejności. Same listy nigdy nie są ponownie uporządkowane.
Czy jest dostępna wbudowana obsługa języka C# do sortowania według indeksu? Nie mogłem go znaleźć ... wszystko, co znalazłem, zmienia kolejność samej kolekcji. Przypuszczam, że istnieje wsparcie, ale nie znalazłem jeszcze odpowiedniego miejsca.
Używam C# .NET 3.5, pod Windows.
Wow! To jest niesamowite. Dokładnie to, czego potrzebowałem w jednej linii. Zakładam, że to musi używać Linq. Nie studiowałem tego, więc nie wiem jak to działa ... zgaduję, że muszę się trochę uczyć. Dzięki! –
Nie, nie ma LINQ, ale istnieje wyrażenie lambda, które jest powszechnie używane z LINQ. – Guffa
A jeśli twoja macierz nie jest porównywalna, jej tylko 1 linia: Porównuje comparer = Porównywarka .Default; Array.Sort (indeks, (a, b) => comparer.Compare (array [a], array [b])); –