gpt4 book ai didi

.net - 如何使用 .NET 对庞大列表的一部分进行排序?

转载 作者:行者123 更新时间:2023-12-02 02:34:30 25 4
gpt4 key购买 nike

在 .NET 中,泛型列表具有接受 IComparerComparison 的排序函数。我只想对列表的一部分进行排序。希望我可以指定起始索引、要排序的元素数和 lambda 函数。如果您要对整个列表进行排序,看起来您只能使用 lambda 函数来执行此操作。是这样还是我错过了什么?

附加要求:

  • 就地排序(以节省内存/时间)
  • 最终列表与原始列表的长度相同

最佳答案

List<int> mylist = new List<int>() {8,4,6,2,1,5,3,1,7};
List<int> myRange = mylist.GetRange(2,4);

mylist.RemoveRange(2, 4);
mylist.InsertRange(2, myRange.OrderBy(i => i));

mylist.Dump();

编辑:将 Dump 视为在列表上运行 foreach 并将其打印到控制台。
这是在改变原来列表的内容。

EDIT2:看看这段代码是否有帮助

    List<int> mylist = new List<int>() ;
for(int i=9999999; i > 0; i--)
{
mylist.Add(i);
}

Console.WriteLine("start " + DateTime.Now.Ticks);
var extract = mylist.Skip(10).Take(1000000).OrderBy(i => i);

int k = 10; // start from (because we skipped from 10 onwards above)
foreach(int item in extract)
{
mylist[k++] = item;
}


Console.WriteLine("done" + DateTime.Now.Ticks);
foreach(int item in mylist)
Console.WriteLine(item);

关于.net - 如何使用 .NET 对庞大列表的一部分进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2399655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com