gpt4 book ai didi

c# - 学习 LINQ : QuickSort

转载 作者:可可西里 更新时间:2023-11-01 08:55:04 24 4
gpt4 key购买 nike

我今天下午冒险开始研究 LINQ,到目前为止只是在集合上研究 LINQ。我尝试的第一件事就是实现 QSort。

现在 -- 忽略我可以只使用 ORDERBY 并且这是一个非常愚蠢的 qsort 实现的事实 -- 我想到的是:

public class lqsort
{
public static List<int> QSLinq(List<int> _items)
{
if (_items.Count <= 1)
return _items;

int _pivot = _items[0];

List<int> _less = (from _item in _items where _item < _pivot select _item).ToList();
List<int> _same = (from _item in _items where _item == _pivot select _item).ToList();
List<int> _greater = (from _item in _items where _item > _pivot select _item).ToList();

return (QSLinq(_less).Concat(_same.Concat(QSLinq(_greater)))).ToList();
}
}

唯一真正让我烦恼的是涉及的所有选角。我可以使用任何 LINQ 技巧吗?还是我只是将 LINQ 用于非预期目的?

最佳答案

只需将参数的类型更改为IEnumerable即可并使用 var构造而不是你的 List<int>为你的局部变量。

这将使您的 QSLinq方法更好,因为它将接受更多类型的参数,例如 int[] ,以及 List<int> .

查看新方法:

    public static IEnumerable<int> QSLinq(IEnumerable<int> _items)
{
if (_items.Count() <= 1)
return _items;

var _pivot = _items.First();

var _less = from _item in _items where _item < _pivot select _item;
var _same = from _item in _items where _item == _pivot select _item;
var _greater = from _item in _items where _item > _pivot select _item;

return QSLinq(_less).Concat(QSLinq(_same)).Concat(QSLinq(_greater));
}

希望这对您有所帮助。

关于c# - 学习 LINQ : QuickSort,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/185072/

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