gpt4 book ai didi

c# - 如何在排序数组中定位一个点?

转载 作者:太空宇宙 更新时间:2023-11-03 21:11:30 24 4
gpt4 key购买 nike

比如我有一个排序数组(网格点):0, 1, 2, 3, 4, 5

然后我尝试定位 3.3 的位置。它位于元素 3 和 4 之间,因此结果应该是元素 3 的索引,即 3。有什么方法可以做到吗?

最佳答案

您可以使用默认的 BinarySearch List<T> 之一的方法或 Array ,但如果没有找到完全匹配项,如何获取最接近元素的索引并不是立即显而易见的。为此,您需要这样做:

var list = new float[] { 0, 1, 2, 3, 4, 5 };
var idx = Array.BinarySearch(list, 3.3f);
if (idx < 0)
idx = ~idx;

如果未找到直接匹配项,方法将返回负数,在应用 ~ 运算符后,它会为您提供比您搜索的内容更大的下一项的索引。在您的情况下,它将是“4”,因此索引是“4”。要获得比您搜索的内容更小的最接近的项目 - 只需减去 1(注意索引可能变为 -1,因此会超出数组的范围)。另请注意,如果目标元素大于数组中的所有元素 - 它(在应用 ~ 运算符之后)将返回数组边界之外的索引(索引等于数组长度)。另请注意,array\list 必须已经排序 - 这些方法不会为您排序。

关于c# - 如何在排序数组中定位一个点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37333310/

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