【问题标题】:Do we have sorting and searching function in .net我们在.net中有排序和搜索功能吗
【发布时间】:2011-03-09 00:33:14
【问题描述】:

我在一个集合中实现线性搜索,然后我想为什么不使用二进制搜索,为此我不得不使用排序。 虽然我可以实现它们,但我想知道它们在 .net 本身中的位置。我希望它会出现在 .Net 中。

【问题讨论】:

  • 当我得到更多的选票时,一定记得给这个投票。

标签: c# .net sorting collections search


【解决方案1】:

.NET 默认实现了排序,但是虽然您可以指定您希望元素排序的顺序,但您不能指定它的排序算法。

因此,您可能对this article 感兴趣,它提供了用于抽象排序的 .NET 代码,包括每个主要排序方法的实现。

【讨论】:

  • 你给的文章看起来不错,很有用,阅读并实施后会评论更多。
【解决方案2】:

来自this所以回答:

.NET 使用 Quicksort 的变体(Sedgewick 的中位数为 3 Quicksort)。

【讨论】:

    【解决方案3】:

    如果我没记错的话,这就是你要找的东西

    public class Person
    {
        public int age;
        public string name;
    
        public Person(int age, string name)
        {
            this.age = age;
            this.name = name;
        }
    }
    
    
    List<Person> people = new List<Person>();
    
    people.Add(new Person(50, "Fred"));
    people.Add(new Person(30, "John"));
    people.Add(new Person(26, "Andrew"));
    people.Add(new Person(24, "Xavier"));
    people.Add(new Person(5, "Mark"));
    people.Add(new Person(6, "Cameron"));
    

    用于搜索

     // with delegate
        List<Person> young = people.FindAll(delegate(Person p) { return p.age < 25; });
    
        // with lammda
        List<Person> young = people.FindAll(a=> a.age < 25);
    

    用于排序

    // with delegate
    people.Sort(delegate(TestKlasse a, TestKlasse b) { return a.age.CompareTo(b.age); });
    
    // with lambda function
    people.Sort((a, b) => a.age.CompareTo(b.age));
    

    【讨论】:

    • CompareTo 内部使用什么函数。即排序算法?
    • 这似乎不是他想要的。他有搜索能力,但想控制搜索算法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    相关资源
    最近更新 更多