はC#のいstd::nth_element相当?
-
23-09-2019 - |
質問
私は移植もC++のコードのC#.
はC#に相当す std::nth_element()
たいロールっす。
解決
のではないかと思いを探しているアクセス用メソッドを返すのn番目の要素の順序なしコレクションを行う部分なのです。 この傾向にあるのですが、とても大きな収集に興味のある最初の要素に基づく一部のご注文の述語.
私の知るもの。純BCLはLINQの拡張を提供します。 すべての分別方法を含むEnumerable.OrderBy)を完全に発注するものと期待される。
が必要な場合は効率的な版のn番目のが必要となりまロール独自の拡張方法IEnumerableいます。っている場合ロールまでは払える気があります。ているの クを選択アルゴリズム, するO(n)時間です。
場合にはブルートフォン版で十分、使用LINQ:
var someCollection = new []{ 5, 2, 8, 9, 0, 1, 3, 12, 4 };
var fifthItem = someCollection.NthItem(5);
public static class NthExtensions
{
public static T NthItem(this IEnumerable<T> coll, int n)
{
return coll.OrderBy(x => x).Skip(n - 1).First();
}
}
他のヒント
いいえ、それはしていません。あなたが選択アルゴリズムを記述する必要があります(できれ迅速を選択)手でます。
直接相当するものはありません。あなたは、潜在的に、LINQの[並べ替えを使用し、任意のIEnumerableに同じ目標をacheiveする/スキップを取る、しかし、全体のコレクションは、このプロセスにソートされます。
でした所属していません StackOverflow