我是尝试使用IEnumerable接口的新手。我总是编写自定义哈希排序而不是尝试使用本机语法,因为我对实现感到有些困惑。我正在尝试确定是否可以使用BinarySearch或类似函数以排序格式组装List。是否有一个函数将返回最接近的可能索引以将新项目插入List,以便每次插入项目时列表始终通过哈希树进行排序?
当我使用BinarySearch时,如果没有匹配,它似乎总是返回-1。我宁愿它返回最近的可能索引。有没有办法使用本机IEnumerable接口执行此操作?每次我想引用List时,我宁愿不调用“Sort(IComparer)”。
简而言之:在向List添加新项目时,可以使用BinarySearch或某些等效函数来查找“插入(项目,索引)”到列表中的最佳索引吗?
答案 0 :(得分:4)
考虑使用SortedSet<T>
,它具有内置支持以保持列表排序。这样做的好处是可以保证内容始终按排序顺序排列,而不是在修改列表时依赖代码来正确遵守排序顺序。
答案 1 :(得分:0)
如果有人遇到这种情况 - 第一个解决方案是在提问之前始终仔细阅读文档。
如果找不到匹配项,BinarySearch(IComparer)将返回下一个最佳位置的按位赞美,因此它满足&#34;二叉树排序&#34的需要34;填充列表时列出。当我看到它返回&#34; -1&#34;我错误地断定这意味着&#34;没有找到&#34;由于我经常使用&#34; -1&#34;为&#34;未找到&#34;否则整数应为正数。