我一直在嘗試對排列在簡單列表中的項目進行排列,我已使用以下代碼從question中進行排序,但當序列的大小變得非常大時,它非常慢。在列表中排列項目
static IEnumerable<IEnumerable<T>>
GetPermutations<T>(IEnumerable<T> list, int length)
{
if (length == 1) return list.Select(t => new T[] { t });
return GetPermutations(list, length - 1)
.SelectMany(t => list.Where(e => !t.Contains(e)),
(t1, t2) => t1.Concat(new T[] { t2 }));
}
例如,當輸出的長度需要是大的,則此方法需要很長的時間被執行。
這個問題的一個例子是,我們有25個字母,我們想知道所有可能的5租客長單詞,我們可以與他們產生。
有沒有其他方法可以比這個更快運行?
對此問題的接受答案是否有效? LINQ幾乎總是很慢。 – 2017-10-05 13:32:14
@someone「LINQ幾乎總是很慢」Sais是誰?這完全取決於你如何迭代你的收藏,並且與linq per-sé無關。 – HimBromBeere
我沒有說用linq編寫快速代碼是不可能的,但是沒有linq的代碼可能會更快。 – 2017-10-05 13:36:24