Skip to main content
 首页 » 编程设计

C# 集合之按元素排序(旋转)

2024年01月13日29yjmyzz

我有一个 IEnumerable<Point>收藏。假设它包含 5 个点(实际上它更像是 2000 个)

我想对这个集合进行排序,以便集合中的特定点成为第一个元素,所以它基本上是在特定点处切割集合并将它们重新连接在一起。

所以我的 5 点列表:

{0,0}, {10,0}, {10,10}, {5,5}, {0,10}

根据索引 3 处的元素重新排序将变为:

{5,5}, {0,10}, {0,0}, {10,0}, {10,10}

解决这个问题的计算效率最高的方法是什么,或者是否有一个已经存在的内置方法...如果是这样我似乎找不到一个!

请您参考如下方法:

var list = new[] { 1, 2, 3, 4, 5 }; 
 
var rotated = list.Skip(3).Concat(list.Take(3)); 
 
// rotated is now {4, 5, 1, 2, 3}