问题是扩展二分搜索算法,以最有效的方式在排序数组中查找所有出现的目标值。 具体来说,算法的输入是(1)一个排序好的整数数组,其中有些数可能出现不止一次,(2)一个待搜索的目标整数。该算法的输出应该是一对索引值,指示整数在数组中的第一次和最后一次出现(如果确实出现)。 源代码可以是 c#、c、c++。
此外,我们可能需要多少次比较才能找到索引?
最佳答案
对于 C++,您可以查找 std::equal_range()
及其复杂性要求。只要您对基本算法感兴趣,就应该适用相同的一般规则,而不管实现使用何种语言。
关于c# - 二进制搜索算法的扩展,用于查找要在数组中搜索的键值的第一个和最后一个索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2218931/