gpt4 book ai didi

algorithm - 插值搜索超出范围

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:50:00 25 4
gpt4 key购买 nike

这是维基百科的一段 sample implementation of interpolation search :

public int interpolationSearch(int[] sortedArray, int toFind){
// Returns index of toFind in sortedArray, or -1 if not found
int low = 0;
int high = sortedArray.length - 1;
int mid;
while (sortedArray[low] <= toFind && sortedArray[high] >= toFind) {
mid = low +
((toFind - sortedArray[low]) * (high - low)) /
(sortedArray[high] - sortedArray[low]); //out of range is possible here

if (sortedArray[mid] < toFind)
low = mid + 1;
else if (sortedArray[mid] > toFind)
// Repetition of the comparison code is forced by syntax limitations.
high = mid - 1;
else
return mid;
}

if (sortedArray[low] == toFind)
return low;
else
return -1; // Not found
}

为什么那里可能超出范围?

编辑:添加了整个代码

最佳答案

如果发生整数溢出,则此处可能超出范围。为了克服这个问题,您可以使用 float/double 而不是 32 位整数。

看看这个, What's wrong with this Interpolation search implementation?

关于algorithm - 插值搜索超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29200519/

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