【问题标题】:how can i use binary search in c# for generic list我如何在 C# 中使用二进制搜索来获取通用列表
【发布时间】:2020-05-23 08:49:22
【问题描述】:

我想对我的列表进行排序,然后使用二进制搜索在列表中找到一个名称并显示它。

public abstract class animal {
  protected int age
  protected string name
  public print() {
    console.writeline({
      age
    } + {
     name
    });
  }
  animal() {}~animal() {}
}

public class pets {
  private List<animal> list = new List<animal>();

  public void search(string m) {
    int index = list.BinarySearch(m);
    if (index == 0)
      list[index].print();
  }
}

【问题讨论】:

  • 请在下次发布您的实际代码。您发布的内容无法编译。
  • 对不起,我压力大,时间不多
  • 什么是animal() {}~animal() {}?我努力清理代码,但无法理解。另外,你的意思是在Console.WriteLine() 中使用字符串插值吗?
  • @Hunter:我理解你的压力,没有太多时间。我们都去过那里!但多花一点时间来认真对待您的问题将有助于确保您更快地获得有用的答案,并最终节省您的时间。

标签: c# sorting binary-search


【解决方案1】:

内置的BinarySearch 方法不允许您传入非列表类型的值。要使用内置的BinarySearch,您需要定义一个实现IComparer&lt;Animal&gt; 的类,该类通过Name 进行比较,或者使Animal 实现IComparable&lt;Animal&gt;,以便默认情况下按名称比较两个动物。然后你 Sort() 列表并调用 BinarySearch,传递一个具有你要搜索的名称的 Animal 实例。

您必须实现自己的 BinarySearch 方法来搜索具有给定属性值的对象(当然,假设该列表按相同的属性排序)。

如果您只想使用常规线性搜索方法来搜索具有给定名称的动物,您可以使用直接的 foreach 循环,在找到具有该名称的项目时使用 breaking,或者使用 @ 987654334@Linq 方法(基本上做同样的事情)。

【讨论】:

    猜你喜欢
    • 2015-10-31
    • 1970-01-01
    • 2012-11-30
    • 2014-08-10
    • 2011-08-21
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多