Java 如何使用带字符串的插值搜索计算mid?

Java 如何使用带字符串的插值搜索计算mid?,java,algorithm,search,interpolation,Java,Algorithm,Search,Interpolation,对于数字,我们可以通过以下等式计算探针指数计算: low+((target-key[low])*(high-low))/(key[high]-key[low]) 但问题是如果target和key[index]是字符串 我们怎么知道两个字符串之间的区别 我认为的方法是: 如果把字符串作为ASCII数,“A”表示97(DEC),“D”表示100,现在“A”和“D”的差为3。p> 但是如果这两个字符串更长呢 我们应该如何称量这两根绳子?例如“ad”和“da”。如果我计算每个字符的权重,“a”和“d”之

对于数字,我们可以通过以下等式计算探针指数计算:

low+((target-key[low])*(high-low))/(key[high]-key[low])

但问题是如果target和key[index]是字符串

我们怎么知道两个字符串之间的区别

我认为的方法是:

如果把字符串作为ASCII数,“A”表示97(DEC),“D”表示100,现在“A”和“D”的差为3。p> 但是如果这两个字符串更长呢


我们应该如何称量这两根绳子?例如“ad”和“da”。如果我计算每个字符的权重,“a”和“d”之间的差值是3,“d”和“a”之间的差值也是3。我怎么知道“ad”和“da”之间的区别呢?

我感觉自己走进了一场谈话的中间。很明显,你知道你一直在做什么,但你希望我们也知道,我不知道你在说什么。@ajb很抱歉给你带来困惑。所以我知道两个单独的字符之间的区别。但是我不知道两个字符数组之间的区别…没有“两个字符数组之间的区别”这样的东西。你必须根据你试图解决的问题来定义它。但是你没有给我们任何关于你想要完成什么的信息,你不能用整数权重来完成,但是字符串和有理数之间有一个很好的匹配。只需将每一个字符作为BASE-256(或任何东西)中的一个数字,并在字符串的起始处放置一个虚拟基点。现在你有了一个一致的绝对位置(每个东西都映射到0和1之间的某个地方)和距离(只需减去),这对性能也没用,但你可以近似它。@ajb只需忽略上下端点字符串的公共前缀即可。然后三个字符就足够进行插值搜索了。